WordPress DemoSite

Тестовый сайт для экспериментов и демонстраций возможностей

symlink: php artisan storage:link в Laravel

Команда php artisan storage:link в Laravel используется для создания символической ссылки (symlink) между папкой public/storage и папкой storage/app/public. Это необходимо для того, чтобы файлы, хранящиеся в storage/app/public, были доступны через веб-сервер.


Зачем это нужно?

В Laravel файлы, загруженные пользователями (например, изображения, документы), обычно сохраняются в папке storage/app/public. Однако эта папка находится вне корневой директории веб-сервера (обычно это public), поэтому файлы из нее не могут быть доступны напрямую через браузер.

Чтобы сделать эти файлы доступными, нужно создать символическую ссылку из public/storage в storage/app/public. После этого файлы из storage/app/public будут доступны по URL, например:

http://ваш-сайт/storage/имя-файла.jpg

Как это работает?

  1. Символическая ссылка (symlink) — это специальный файл, который ссылается на другую папку или файл. В данном случае symlink связывает public/storage с storage/app/public.
  2. После создания symlink все файлы, которые находятся в storage/app/public, будут доступны через public/storage.

Как выполнить команду?

  1. Откройте терминал в корневой папке вашего Laravel-проекта.
  2. Выполните команду:
   php artisan storage:link

После выполнения команды в папке public появится символическая ссылка storage, которая указывает на storage/app/public.


Пример использования

  1. Загрузите файл (например, изображение) в storage/app/public:
   $path = $request->file('avatar')->store('public');

Файл будет сохранен в storage/app/public/avatars/имя-файла.jpg.

  1. Создайте symlink, если он еще не создан:
   php artisan storage:link
  1. Теперь файл будет доступен по URL:
   <img src="{{ asset('storage/avatars/имя-файла.jpg') }}" alt="Avatar">

Здесь asset() генерирует полный URL до файла, например:

   http://ваш-сайт/storage/avatars/имя-файла.jpg

Что делать, если symlink не работает?

  1. Проверьте права доступа:
    Убедитесь, что веб-сервер имеет права на чтение папки storage/app/public и создание symlink в public.
  2. Проверьте поддержку symlink на сервере:
    Некоторые хостинги могут запрещать создание symlink из соображений безопасности. В этом случае вам нужно будет вручную скопировать файлы из storage/app/public в public/storage.
  3. Используйте облачное хранилище:
    Если symlink недоступен, рассмотрите возможность использования облачного хранилища (например, Amazon S3) для хранения файлов.

Заключение

Команда php artisan storage:link — это удобный способ сделать файлы из storage/app/public доступными через веб-сервер. Она создает символическую ссылку, которая связывает public/storage с storage/app/public, что упрощает работу с загруженными файлами в Laravel. Если вы работаете с загрузкой файлов, обязательно используйте эту команду для обеспечения доступа к ним через браузер.

Полный стэк: .NET | AMQP | Android | api | Bash | Bootstrap | C++ | cms | Composer | css | Data | Elasticsearch | ESP32 | Git | GraphQL | Gulp | JavaScript | JetStream | Joomla | js | Kotlin | Laravel | LEMP | Linux | LMS | Markdown | MODX | Moodle | MySQL | NATS | Nginx | Node.js | OpenCart | Parsedown | PHP | Python | RabbitMQ | SCSS | SEO | Simpla | SOAP | SQL | startup | Swift | Symfony | Tailwind | Translation | Twig | Ubuntu | Unit | web3 | Webasyst | Webpack | WebSocket | WordPress | XML | Бизнес | блокчейн | ИИ | интернет-магазин | ЛК | Руководство | ТЗ | фреймворк | Яндекс.Трекер