我正在尝试将文件上传到与 s3 兼容的对象存储(我使用的是 Minio),但 laravel 中的 aws 客户端不使用我在 .env AWS_URL 变量中提供的 url。
AWS_URL=http://192.168.1.22:9000
我正在使用 artisan 内置服务器,并且已经尝试清除配置缓存。
我目前的代码是:
$request->videoFile->store('videoFiles', 's3');
我收到一个错误,表明 laravel 正在尝试连接到错误的 url。
Error executing "PutObject" on "https://myawesomebucket.s3.amazonaws.com/videoFiles/bs20uHPxkprbG6fC6e1B6pHtBiQxwgTmrrDdGP2e.mp4";
最佳答案
s3
中的默认 filesystems.php
条目如下所示:
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
尽管这似乎在某一时刻适用于 minio,但现在似乎完全忽略了
url
属性。这是一个适用于 minio 和 S3 的修改后的配置:
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
// the below 'endpoint' url is actually used:
'endpoint' => env('AWS_URL'),
// prevent bucket name from being added to the hostname:
'bucket_endpoint' => false,
// use older urls:
'use_path_style_endpoint' => true,
],
我引用了这些指南来查找此信息:
关于php - Laravel s3 文件系统驱动程序不使用 AWS_URL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55994600/