- Laravel từ chối cho bạn thực hiện các thao tác truy cập (GET), tải lên hay lưu (PUT) file thông qua
Storage
class - Quá trình xử lý Route trả về Response có status code 500
- Laravel Oops hiển thị các Error Log (Exception) tương tự như:
- InvalidArgumentException Driver [] is not supported
- InvalidArgumentException Driver [dropbox] is not supported
- InvalidArgumentException Driver [sftp] is not supported
- InvalidArgumentException Driver [s3] is not supported
- ..
TÓM TẮT NỘI DUNG
Ý nghĩa lỗi
Laravel không thể nhận dạng Storage driver mà bạn đang muốn sử dụng.
Nguyên nhân
- Do bạn khai báo sai tên driver trong config/filesystems.php
- Do bạn chưa cài thư viện driver mà mà bạn đang muốn sử dụng
- Do autoload của Laravel chưa cập nhật folder driver mà bạn đã đưa vào thư mục vendor
- Do bạn chưa build lại Config Cache (trong trường hợp bạn đã build cache trước đó)
Cách khắc phục (fix)
Bước 1. Kiểm tra lại tên driver mà bạn đã khai báo trong config/filesystems.php
Bạn mở file config → filesystems.php và kiểm tra thông tin driver
bên trong các disk
mà bạn đã khai báo trước đó. Ví dụ:
'disks' => [
'public' => [
'driver' => 'local', // Kiểm tra property này
'root' => base_path('public'),
'url' => env('APP_URL').'/',
'visibility' => 'public',
],
..
],
Thông thường, các coder thường mắc lỗi quên (chưa) khai báo driver cho disk, hay khai báo sai tên driver.
Bước 2. Kiểm tra xem bạn đã cài đặt packpage (gói/thư viện) driver cho project Laravel của bạn
Ngoại trừ các driver mặc định được hỗ trợ sẵn trong Framework Laravel như local
và ftp
, các driver khác như sftp
, s3
, dropbox
, googledrive
, onedrive
… đều cần sự hỗ trợ từ các package được cài đặt bổ sung vào project Laravel. Để kiểm tra xem bạn cài đặt package cho Storage driver mà bạn đang sử dụng chưa, ta kiểm tra 2 vị trí sau:
- File composer.json (bên trong property
require
vàrequire-dev
) - Thư mục packpage của driver đã xuất hiện bên trong thư mục vendor hay chưa
Sau khi kiểm tra, nếu bạn nhận thấy rằng packpage (gói/thư viện) của driver mà bạn đang sử dụng chưa được cài đặt, hãy tiến hành cài đặt nó. Bạn có thể dễ dàng cài đặt bất kỳ một packpage nào thông qua command composer require
package-name.
Bước 3. Tạo lại autoload
cho project Laravel
Trong một số trường hợp, vì một lý do nào đó mà các file autoload của project Laravel chưa khớp với các package có trong thư mục vendor, từ đó dẫn đến hiện tượng Laravel không nhận dạng package mặc dù nó đã xuất hiện trong thư mục vendor và composer.json.
Bạn có thể dễ dàng tạo lại autoload thông qua command composer dump-autoload
Bước 4. Thử xoá Config Cache
Như đã phân tích ở phần Nguyên nhân, Config Cache cũng là một trong những yếu tố khiến project Laravel của bạn không thể nhận dạng Storage driver. Chính vì thế, ta hãy thử xoá config cache thông qua command php artisan config:clear
.