Alixx
@Alixx

Почему не работает символическая ссылка storage/app/public в Laravel?

Добрый день. После смены режима в xampp с cgi на mod_php в laravel перестала работать символическая ссылка на storage/app/public. При открытии www.mysite.local/storage попадаю в папку public/storage вместо storage/app/public. Подскажите, в чём может быть дело? Как исправить?
Содержимое config\filesystem.php:
'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

P.S.: xampp стоит на ноуте с windows 7. До смены режима ссылка работала..
UPD: Или как тогда выводить ссылки на файлы? Через asset() или ещё какие варианты? Или вообще перенести все файлы в, собственно, сам public/storage..?

UPD 2: В итоге я нашла, как правильно исправить ситуацию, избавившись от лишнего роута (отмеченного решением).
В public нужно удалить папку storage и заново запустить команду artisan storage:link - она заново создать папку-ярлык на storage\app\public. И ссылки снова стали работать без помощи роута.
  • Вопрос задан
  • 2749 просмотров
Решения вопроса 1
@LEIFEI
Столкнулся с той же проблемой на Open Server.

Решение:

1. Снести папку
2. В .env файле поменять FILESYSTEM_DRIVER=local на public
3. Заново создать ссылку php artisan storage:link
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Alixx
@Alixx Автор вопроса
В общем, кому нужно, чтобы правильно работали ссылки на storage/app/public можно использовать вот такой вариант, взятый отсюда:

Route::get('storage/{filename}', function ($filename)
{
    $path = storage_path('app\public\\' . $filename);

    if (!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы