如何解决Laravel 8配置AWS S3文件系统出现的cURL error 3错误
问题根因
你遇到的cURL error 3本质是请求的S3资源地址格式不合法,缺少http/https协议头,核心是配置参数赋值位置错误:
bucket参数仅支持填写纯桶名,你把带域名后缀的完整地址填入bucket参数,会导致框架拼接请求地址时逻辑混乱- Laravel 8新增的
url/endpoint参数未正确配置,导致生成的资源地址缺少协议头
正确配置方案
1. 修改config/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'), 'endpoint' => env('AWS_ENDPOINT'), // 非AWS原生S3兼容存储(如Minio、阿里云OSS兼容模式)建议开启路径式寻址 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), ],
2. 对应修改.env配置文件
# bucket仅填纯桶名 AWS_BUCKET=example-uploads-int-s3-bucket # url填写完整带https协议的桶访问域名 AWS_URL=https://example-uploads-int-s3-bucket.s3.amazonaws.com # 其余参数按实际权限信息填写即可 AWS_ACCESS_KEY_ID=你的AWS访问密钥ID AWS_SECRET_ACCESS_KEY=你的AWS访问密钥 AWS_DEFAULT_REGION=你的S3桶所在区域,比如us-east-1 # AWS原生S3无需填写endpoint,第三方兼容存储才需要配置 # AWS_ENDPOINT= # AWS_USE_PATH_STYLE_ENDPOINT=false
3. 生效配置
修改完后执行配置缓存清理命令确保新配置生效:php artisan config:clear
内容的提问来源于stack exchange,提问作者user1015214
相关产品推荐
相关产品推荐

