Laravel s3 文件系统驱动程序未使用 AWS_URL 变量

Laravel s3 filesystem driver not using AWS_URL variable

我正在尝试将文件上传到 s3 兼容对象存储(我正在使用 Minio),但是 laravel 中的 aws 客户端不使用我在我的 . env AWS_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"; 

我有时遇到 env 文件的问题。我不确定这里是否有足够的信息来回答你的问题,但我会从 dd(AWS_URL) 开始,看看那里实际出现了什么。也许在

周围加上引号
AWS_URL="http://192.168.1.22:9000"

如果这不起作用,我已将内容添加到配置文件中:

'url' => 'http://192.168.1.22:9000'

filesystems.php 中的默认 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'),
    ],

虽然这似乎在某一时刻对 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,
    ],

我参考了这些指南来查找此信息: