Symlink (): нет такого файла или каталога, потому что общая папка находится в другом каталоге

Я работаю над приложением и хочу реализовать загрузку изображений в свое приложение. Теперь, когда я хочу создать символическую ссылку для своих файлов, я получаю следующую ошибку:

ErrorException : symlink(): No such file or directory

Exception trace:
symlink("/home/user/private/application/storage/app/public", "/home/user/private/application/public/storage")

Я знаю, в чем причина этого, но я не знаю, как исправить и / или найти обходной путь.

Моя общедоступная папка находится в моем каталоге html_root, а остальная часть приложения находится в каталоге вне моего каталога html_root. В данном случае /home/user/private/application.

когда я использую php artisan storage:link, он пытается найти общую папку в моем «частном» каталоге, но не может ее найти, потому что моя общая папка находится в каталоге html_root.

Если вы изменили структуру папок Laravel, вы не можете ожидать, что функции, которые полагаются на эту структуру, будут работать должным образом. В этом случае я бы посмотрел на код команды storage:link (Illuminate\Foundation\Console\StorageLinkCommand), скопировал его в настраиваемую команду и при необходимости изменил.

Tim Lewis 09.08.2018 16:33

Поскольку в html_root должно быть только общедоступное содержимое, я подумал, что было бы также хорошо (для целей структуры) разместить остальное в другом каталоге.

Noah 09.08.2018 17:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
2
3 336
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема решена помещением моего содержимого html_root обратно в мою личную папку в /home/user/private/application и созданием символической ссылки моей общей папки, которая идет на мой /home/user, и переименованием папки /home/user/public в /home/user/html_root (и сохранением символической ссылки нетронутой).

Так что я остаюсь с официальной структурой каталогов Laravel и делаю фальшивую (символическую ссылку) общей папки.

Благодаря этому я могу использовать php artisan storage:link в обычном режиме без создания специальной команды.

Другие вопросы по теме