Хранение в laravel говорит symlink - нет такого файла

Я развернул приложение laravel на общем хостинге в папке public_html/app. Вот все из общей папки. В /../../files у меня есть остальная часть файлов. Когда я делаю php artisan storage: ссылка в папке с файлами, моя консоль говорит

[ErrorException]                      
  symlink(): No such file or directory

На localhost я загружаю файлы в папку хранения/загрузки. Что делать сейчас? Я пытался сменить ссылки, но ничего не работает для меня...

Ответ 1

  1. Перейдите в /public каталог и запустите:

    rm storage

  2. Перейдите в корневой каталог 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 и ссылку на папку хранения в приложении.