首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >上载到s3时,curl_exec死机,出现错误500

上载到s3时,curl_exec死机,出现错误500
EN

Stack Overflow用户
提问于 2012-07-02 20:52:34
回答 1查看 698关注 0票数 2

我正在上传一个带有curl (php)的大文件到亚马逊s3,使用POST请求。

当文件很小(几MB)时-它可以工作。当文件大小为几百MB时,脚本将在curl_exec行终止并返回错误500 (我非常清楚这一点,因为我在它之前和之后都放置了日志记录)。

curl初始化看起来像这样

代码语言:javascript
运行
复制
$postdata = array_merge( $headers_array , array('file' => '@' . $filename));           
$curl_handle = curl_init();         
curl_setopt( $curl_handle , CURLOPT_URL , $s3_url );
curl_setopt( $curl_handle , CURLOPT_RETURNTRANSFER , 1 ); 
curl_setopt( $curl_handle , CURLOPT_POST , TRUE );
curl_setopt( $curl_handle , CURLOPT_HEADER , FALSE );
curl_setopt ($curl_handle , CURLOPT_POSTFIELDS, $postdata);

$response = curl_exec( $curl_handle ); 
`500 here`

我假设问题是内存不足(或者类似的东西)。我已经要求我的主机提供商向我展示error_log,但也许我现在可以做些什么。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-02 21:37:58

如果你自己的服务器死于500错误,你可能会耗尽内存,尝试这些步骤。

由于您无法查看错误日志,因此请确保从脚本文件中输出错误:

代码语言:javascript
运行
复制
ini_set('display_errors', 1);
error_reporting(E_ALL);

增加php.ini中的内存限制,或者在发送文件之前最好不要将整个文件加载到内存中(给curl一个文件指针,而不是整个文件内容)。

在这个优秀的PHP S3库中可以看到一个示例:

Amazon S3 PHP Class

如果是Amazon返回了500错误,这将是确定原因的方法:

来自here:以数字"5“开头的响应状态代码表示服务器意识到遇到错误或无法执行请求的情况。除非响应HEAD请求,否则服务器应包括一个实体,该实体包含对错误情况的解释,并指明这是暂时的还是永久的情况。

输出响应头和响应体,查找原因描述:

代码语言:javascript
运行
复制
curl_setopt($curl_handle, CURLOPT_HEADER, 1);
$responseBody = curl_exec($curl_handle);
echo $responseBody;
print_r(curl_getinfo($curl_handle));

原因应该在那里的某个地方被提及。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11294073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档