Laravel uploaded images are not displayed in storage
Обычно это происходит при хардкорном переносе локального проекта Laravel на хостинг.
Причина простая, не созданная символьная ссылка на storage в папке public.
Кажется всё просто, нужно только выполнить команду для создания символьной ссылки:
php artisan storage:link
Особенного удручает на хостинга отсутствие командной строки, спасибо за наводку данному туториалу — Перенос проекта Laravel на хостинг с локального сервера OpenServer добавив команду выше в данный роут, запустив в браузере, видим, что всё вроде хорошо выполнилось.
Route::get('/clear', function () {
Artisan::call('cache:clear');
Artisan::call('config:cache');
Artisan::call('view:clear');
Artisan::call('route:clear');
Artisan::call('storage:link');
return "Cache is clear.";
});
А проблема не решилась!
Потому что если выполнить эту команду из командной строки, увидим:
Якобы у нас уже создана символьная ссылка для папки storage. А по факту имеем, что в папке public обычная папка с названием storage, ведь как появится символьная ссылка, если проект был полностью разархивирован.
Решение:
Удалить папку storage из папки public и запустить команду создания символьной ссылки ещё раз (см. выше).
Как правило символьные ссылки подсвечиваются синим цветом:
Или имеют специальные иконки в файловых менеджерах популярных панелей.
cPanel:
ISPmanager:
Запись из постоянной рубрики — Невнимательность.