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

PHP升级至8.2.6后Laravel调用Minio S3报cURL 56连接重置错误

PHP 8.2.6 + Laravel + Minio 连接重置(cURL error 56)问题解决指南

核心排查方向及修复方案:

  • 修正Docker容器间的访问地址
    如果Laravel和Minio都运行在Docker容器中,绝对不能用localhost:9000作为Minio地址——容器内的localhost指向自身,而非宿主机。改成Minio容器的名称(比如minio)或者自定义Docker网络中的服务名,将.env里的AWS_ENDPOINT设为http://minio:9000即可。

  • 调整PHP/cURL版本兼容性
    PHP 8.2.6与部分cURL版本存在适配bug,会导致连接重置:

    • 临时降级PHP到8.2.5测试,确认是否为8.2.6的特定问题
    • 更换PHP基础镜像,比如使用php:8.2.6-fpm-bullseye,其内置的cURL版本更稳定
    • 手动升级容器内的cURL到最新稳定版
  • 开启Minio的S3兼容模式
    在Minio启动命令中添加--compat参数,强制兼容旧版S3 API。Laravel依赖的AWS SDK可能对Minio新版API的某些特性支持不完善,开启兼容模式后可解决ListObjectsV2请求异常。

  • 检查网络连通性

    • 宿主机执行curl http://localhost:9000,确认Minio服务正常运行
    • 进入Laravel容器,执行curl http://minio:9000(替换为你的Minio服务地址),验证容器间网络是否通畅
    • 排查宿主机防火墙、Docker iptables规则,确保9000端口未被拦截
  • 更新AWS相关依赖
    Laravel使用的aws/aws-sdk-php和league/flysystem-aws-s3-v3旧版本可能存在PHP 8.2适配问题。执行以下命令更新到最新稳定版:

    composer update aws/aws-sdk-php league/flysystem-aws-s3-v3
    

快速验证脚本

写一个极简脚本跳过Laravel封装层,直接测试AWS SDK与Minio的通信:

<?php
require 'vendor/autoload.php';

use Aws\S3\S3Client;

$s3 = new S3Client([
    'version' => 'latest',
    'region' => 'us-east-1',
    'endpoint' => 'http://minio:9000',
    'use_path_style_endpoint' => true,
    'credentials' => [
        'key' => '你的Minio密钥',
        'secret' => '你的Minio密钥密码',
    ],
]);

try {
    $result = $s3->listObjectsV2([
        'Bucket' => 'datalake',
        'Prefix' => '1/files/KKu17oUjsxi3EmGrQMhnJzS38rwiFpE7GgrXxSoq.txt/',
        'MaxKeys' => 1,
    ]);
    print_r($result);
} catch (Exception $e) {
    echo $e->getMessage();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:15:15