我一直在追踪一个影响图片上传的错误,这个错误已经上传到我们开发平台上的网站上了(还没有能够让它在现场发生)。
概要是:
大于~20KB的POST内容会被不一致地截断。
我还未能确切地知道发生了什么。我确信这些数据都传输到Apache,但我不确定它是否收到了所有内容,是否有一些没有传递给PHP,或者是否还有其他事情发生。
到目前为止我采取的步骤:
file_uploads
,post_max_size
,upload_max_filesize
,max_file_uploads
和co设置为合理值。LimitRequestBody
在Apache配置中设置为0。我看到的确切行为有点令人困惑。作为调试的一部分,我检查了
echo strlen( file_get_contents( 'php://input' ) );
无论使用何种文件,每次尝试都会更改值。我看到的最大值约为500KB,最低约为20KB。
通过使用仅在HTTP / 1.0(而不是HTTP / 1.1)中运行的客户端,我已经能够在一种情况下解决此问题(10次尝试成功率为100%)。
使用它作为主角,我试图使用force-downgrade-1.0
和相关指令,但这些指令会影响响应而不是请求。
答案 0 :(得分:1)
原因:
apache.conf有指令
Timeout 0
这导致Apache HTTPD等待0秒后发布数据,而不是像我预期的那样无限期。在开发环境中将Timeout
设置为大量秒可解决此问题。
http://httpd.apache.org/docs/2.2/mod/core.html#timeout没有为Timeout 0
指定语义,所以我认为它是按字面解释的。