You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8对接Backblaze B2时出现CURL无法解析主机错误如何解决

问题解决办法

错误根因

你遇到的主机解析报错由两个常见配置错误共同导致:

  • Laravel默认S3驱动采用虚拟主机风格的桶寻址规则,会自动将桶名拼接到Endpoint域名前缀,而Backblaze B2的S3兼容API要求使用路径风格寻址
  • 你的AWS_ENDPOINT配置缺失https://协议头,导致域名拼接规则异常

修复步骤

  1. 修正.env配置项,补充协议头并新增路径寻址开关
AWS_ACCESS_KEY_ID=key1
AWS_SECRET_ACCESS_KEY=key2
AWS_DEFAULT_REGION=us-west-001
AWS_BUCKET=bucketname
# 补充https协议头
AWS_ENDPOINT=https://s3.us-west-001.backblazeb2.com
# 新增路径风格寻址配置
AWS_USE_PATH_STYLE_ENDPOINT=true
  1. 检查config/filesystems.php中的s3磁盘配置,确保已经引入新增的配置项:
'disks' => [
    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'endpoint' => env('AWS_ENDPOINT'),
        // 新增这一行,开启路径风格寻址
        'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
    ],
]
  1. 清除Laravel配置缓存,确保修改生效:
php artisan config:clear
  1. (可选)优化上传代码,如果你直接传入目录路径作为第一个参数,Laravel会自动用文件的哈希名作为存储文件名,也可以主动指定避免歧义:
Storage::disk('s3')->put(
    'images/covers/' . $request->file('thumbnail')->hashName(),
    $request->file('thumbnail')
);

内容的提问来源于stack exchange,提问作者TheDizzle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:12:02