2015-02-24 40 views
1

我一直在追蹤一個影響圖像上傳到我們的開發平臺上的網站的錯誤(尚未能在現場發生)。Apache + PHP截斷髮布/上傳

的簡介是:

POST含量大於20KB〜不一致被截斷。

我還沒有弄清楚發生了什麼事。我確信數據全部傳輸到Apache,但我不確定它是否全部收到,是否有部分數據未傳遞給PHP,或者是否發生了其他事情。

步驟我已經採取了迄今:

  • 檢查的php.ini file_uploadspost_max_sizeupload_max_filesizemax_file_uploads和共同設置爲合理值。
  • LimitRequestBody在Apache配置中設置爲0。

我看到的確切行爲有點令人困惑。作爲調試的一部分,我檢查了

echo strlen(file_get_contents('php://input')); 

無論使用什麼文件,每次嘗試都會更改該值。我看到的最大值約爲500KB,最低約爲20KB。

通過使用僅在HTTP/1.0(而不是HTTP/1.1)上運行的客戶端,我已經能夠在一種情況下解決此問題(100次成功率超過10次嘗試)。

以此爲主角,我試圖使用force-downgrade-1.0及相關指令,但這些指令會影響響應而不是請求。

回答

1

原因:

的apache.conf有指令

Timeout 0 

這導致apache httpd的等待0秒爲後數據,而不是無限期的,因爲我的預期。在開發環境中將Timeout設置爲大量秒鐘即可解決此問題。

http://httpd.apache.org/docs/2.2/mod/core.html#timeout沒有指定Timeout 0的語義,所以我認爲它的字面解釋。