在服务器上将大文件上传到Amazon S3失败

时间:2019-08-04 07:22:37

标签: php amazon-web-services nginx laravel-5 amazon-s3

尝试使用PHP SDK将4MB的文件上传到S3存储桶时遇到问题。在我无所事事的环境中,这工作正常。但是,当我尝试使用EC2生产服务器时,即使我要上传2MB大小的文件,它也会出现以下错误。但是可以上传小文件而没有问题。有人可以帮我吗?

我在两种环境下都使用nginx。

    $s3 = \App::make('aws')->createClient('s3');
    $name= time() . $file->getClientOriginalName();
    $resp = $s3->putObject(array(
        'Bucket' => 'xxxxxx',
        'Key' => $folder.'/' . $name,
        'ACL' => 'public-read',
        'Body' => new Stream(fopen(realpath($file->getPathName()), 'r'))
    ));

    if ($resp['@metadata']['statusCode'] == 200) {
        return [
            "file_path"=>$resp['ObjectURL'],
            "s3_key"=>$folder.'/' . $name
        ];
    }else{
        return false;
    }
  

在“ https://xxxxxxx.amazonaws.com/documents/1564900266slides.zip”上执行“ PutObject”时出错; AWS HTTP错误:客户端错误:PUT https://xxxxxxx.amazonaws.com/documents/1564900266slides.zip导致了400 Bad Request响应:RequestTimeout您到服务器的套接字连接被(截断了...)RequestTimeout(客户端):未从服务器读取到您的服务器的套接字连接或在超时期限内写入。空闲连接将关闭。 -RequestTimeout在超时时间内未读取或写入您与服务器的套接字连接。

1 个答案:

答案 0 :(得分:0)

检查nginx是否具有类似client_max_body_size 20M;的参数集,以允许最多上传20 MB的文件。 至于PHP,您可以签入php.ini upload_max_filesize = 20M以匹配nginx配置。

设置完这些参数后,您必须使用 sudo nginx -t 检查nginx配置,并使用 sudo服务nginx reload 重新加载配置以应用新设置。