Lumen: для загрузки файла / диска не настроен драйвер

#php #laravel #lumen #flysystem

#php #laravel #lumen #flysystem

Вопрос:

Lumen 6.3.4 / PHP 7.3.9

Пытаюсь загрузить файл из данных формы. Получение этой ошибки: Disk [qr_uploads] does not have a configured driver.

bootstrap/app.php

 $app->configure('filesystems');
$app->register(IlluminateFilesystemFilesystemServiceProvider::class);
  

config/filesystems.php

 <?php

return [
    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
        'permissions' => [
            'file' => [
                'public' => 0664,
                'private' => 0600,
            ],
            'dir' => [
                'public' => 0775,
                'private' => 0700,
            ],
        ],
    ],
    'qr_uploads' => [
        'driver' => 'local',
        'root' => storage_path('qr_uploads'),
        'permissions' => [
            'file' => [
                'public' => 0664,
                'private' => 0600,
            ],
            'dir' => [
                'public' => 0775,
                'private' => 0700,
            ],
        ],
    ]
];
  

controller.php

 $upFile = $request->file('uploading');    
$storedPath = $upFile->store('e_'.$entityId, 'qr_uploads');
  

Получение вышеупомянутой ошибки. Каталог app/storage/qr_uploads существует и доступен для записи. Есть идеи?

Ответ №1:

К сожалению, документы Laravel / Lumen слишком разборчивы в файле конфигурации. Правильный config/filesystems.php файл должен включать свойство «диски»:

 <?php

return [
    'disks' => [
        'local' => [...]
]
  

Это одно. Другая вещь, связанная с Lumen (я не уверен насчет Laravel) — вы должны явно установить зависимость Flysystem!

 composer require league/flysystem
  

Иногда я действительно хотел бы, чтобы документы Lumen / Laravel были несколько конкретны с такими деталями, как это. :/