Хранение в laravel говорит symlink - нет такого файла
Я развернул приложение laravel на общем хостинге в папке public_html/app. Вот все из общей папки. В /../../files у меня есть остальная часть файлов. Когда я делаю php artisan storage: ссылка в папке с файлами, моя консоль говорит
[ErrorException]
symlink(): No such file or directory
На localhost я загружаю файлы в папку хранения/загрузки. Что делать сейчас? Я пытался сменить ссылки, но ничего не работает для меня...
Ответы
Ответ 1
-
Перейдите в /public
каталог и запустите:
rm storage
-
Перейдите в корневой каталог Laravel и запустите:
php artisan storage:link
Отредактировано 1 мая 2018 года
Эта проблема возникает, когда проект laravel перемещается/копируется в другую папку.
Ссылка на хранилище все еще существует, тем самым вызывая ошибку исключения. общедоступная/папка хранения и указывает на неправильное местоположение, и ее необходимо удалить с помощью команды rm storage
.
После этого запустите php artisan storage:link
в терминале и создаст ссылку на хранилище.
Это необходимо сделать КАЖДЫЙ раз, когда laravel перемещается/копируется/развертывается!
Ответ 2
Это обычно происходит после перемещения приложения Laravel в другой каталог
Фактическим каталогом хранения является "/AppName/storage/app/public/"
Laravel создает символическую ссылку, указывающую на фактическое хранилище dir "/AppName/public/storage"
Другое значение
"/AppName/public/storage" указывает на => "/AppName/storage/app/public/"
При изменении корневого каталога приложений на "/AnotherAppName/" symlink по-прежнему укажет на старый путь
"/AnotherAppName/public/storage" => "/AppName/storage/app/public/"
Мое решение - вручную обновить символическую ссылку, используя
ln -sfn /AnotherAppName/storage/app/public/ /AnotherAppName/public/storage
Ответ 3
Я сталкиваюсь с той же ошибкой, когда использую общий хостинг и мой публичный каталог перемещается в public_html или другой каталог, такой как: каталог проекта с корневым именем "project" и публичный каталог с корневым именем "public_html"
когда команда Artisan запускается Artisan :: call ('storage: link'); тогда столкнись с этой ошибкой.
Решение: сначала нужно связать ваш публичный каталог в методе регистрации app/Providers/AppServiceProvider
$this->app->bind('path.public', function() {
return base_path('../public_html');
});
Теперь запустите команду, она работает нормально
Ответ 4
Я использовал Vagrant и у меня была такая же проблема. Я удалил в каталог хранения в public/storage
но не смог решить проблему при использовании команды php artisan storage:link
.
Поэтому я подключился с помощью ssh к своему бродячему ящику и выполнил там команду. Это сработало, поэтому, если вы работаете с Vagrant и у вас возникла та же проблема, это может помочь.
Ответ 5
попробуйте удалить существующую символическую ссылку хранилища, а затем попробуйте php artisan storage: команда link
Ответ 6
создайте новый файл php и поместите этот код в файл:
<?php>
symlink('/home/CpanelUser/storage/app/public', '/home/CpanelUserpublic_html/storage');
?>
"CpanelUser" изменится на имя пользователя или хоста cpanel.
загрузить этот файл в папку public_html (www) исполняемого файла сайта с записью имени сайта + этот файл в браузере завершен!
пример: мое имя файла - symlink.php, а имя сайта - www.anysite.com. Загрузите symlink.php в папку public_html на хосте и получите веб-адрес в браузере.
http://www.anysite.com/symlink.php
после этого запустите эту папку хранения файлов в общую папку в laravel и ссылку на папку хранения в приложении.