Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.04.2018 17:12:05

Не работает симлинк на storage/app/public. Какие варианты?

Здравствуйте!
На ноуте стоит windows 7 х64, xampp - php 7.2.0, apache 2.4.29 (Win32).
После смены режима в xampp с cgi на php как модуль apache в laravel перестала работать символическая ссылка на storage/app/public. При открытии www.mysite.local/storage попадаю в папку public/storage вместо storage/app/public. Делаю artisan storage:link получаю - The "public/storage" directory already exists. Подскажите, в чём может быть дело? Как исправить?
Или есть альтернативные варианты получения ссылок на файлы из storage/app/public, без символической ссылки? Или просто перенести оттуда файлы в public/storage? 
Содержимое 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.: короче говоря, как прописывать теперь ссылки на файлы без символической ссылки?..

Не в сети

#2 06.04.2018 18:57:50

Re: Не работает симлинк на storage/app/public. Какие варианты?

В общем, кому нужно, чтобы правильно работали ссылки на 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;
});

Не в сети

#3 06.04.2018 19:58:58

Re: Не работает симлинк на storage/app/public. Какие варианты?

только код там какой-то кривоватый. (или это на серверах такие пути должны быть??)
у меня локально, если загружаем вот так:

Storage::put('images/folder/myfilename1.jpeg', file_get_contents($request->file('file')->getRealPath()));

то по урле

 http://corporate.loc/storage/myfilename1.jpeg 

из приведённого примера, у меня вот так заработало:

 $path = storage_path('app/images/folder/' . $filename); 

Изменено sam (06.04.2018 20:01:23)

Не в сети

#4 06.04.2018 20:32:08

Re: Не работает симлинк на storage/app/public. Какие варианты?

Хз, у меня заработало с изменением

$path = storage_path('public/' . $filename);

на

$path = storage_path('app\public\\' . $filename);

а урл такой

http://www.my.local/storage/images/1.jpg

Не в сети

Подвал раздела