尝试使用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在超时时间内未读取或写入您与服务器的套接字连接。
答案 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 重新加载配置以应用新设置。