2011-06-11 82 views
10

我一直有很多用戶在我的網站上傳圖片的問題。PHP警告:POST內容長度113字節超過-1988100096字節的限制在Unknown

他們最多可以上傳6張圖片

我本來在php.ini中改變值:

upload_max_filesize = 2000M 
post_max_size = 2000M 
max_execution_time = 120 
max_file_uploads = 7 
memory_limit=128M 

我不得不改變這種作爲是讓所有類型的錯誤一樣出內存,最大超標後等

一切都會OK,直到我檢查其包含我的錯誤日誌:

[11-Jun-2011 04:33:06] PHP Warning: Unknown: POST Content-Length of 113 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:33:12] PHP Warning: Unknown: POST Content-Length of 75 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:33:27] PHP Warning: Unknown: POST Content-Length of 74 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:33:34] PHP Warning: Unknown: POST Content-Length of 75 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:33:43] PHP Warning: Unknown: POST Content-Length of 77 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:33:48] PHP Warning: Unknown: POST Content-Length of 74 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:33:53] PHP Warning: Unknown: POST Content-Length of 75 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:34:20] PHP Warning: Unknown: POST Content-Length of 133 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:35:29] PHP Warning: Unknown: POST Content-Length of 131 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:36:00] PHP Warning: Unknown: POST Content-Length of 113 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:36:06] PHP Warning: Unknown: POST Content-Length of 75 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0 
[11-Jun-2011 04:36:34] PHP Warning: Unknown: POST Content-Length of 116 bytes exceeds the limit of -1988100096 bytes in Unknown on line 0

如果我改變後的最大值回頂8M我得到的消息是這樣的:

PHP Warning: POST Content-Length of 11933650 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

任何想法,我要去的地方錯了嗎?

+3

爲什麼任何理智的人試圖通過網絡的形式上傳文件一樣大,2GB? – ThiefMaster 2011-06-11 13:46:07

+0

@ThiefMaster:嗯,這可能與我想上傳的文件的大小有關:)。 – hakre 2011-06-11 13:50:30

+0

有更好的方法來上傳大型文件 - 例如FTP。 – ThiefMaster 2011-06-11 14:54:53

回答

21

在一些32位系統上,PHP將採用內存設置,如2000M2G,並通過不執行邊界檢查將其轉換爲整數字節數。然後從2G2048M開始的數字將爲-2147483648字節。

一些PHP版本將其封在頂部,所以它不會進入負數(即32位有符號整數限制)。

如果要在此類系統上實現最大可能的字節數,請使用2147483647。這等於兩千兆字節減一個字節。

或者,如果您需要處理大量數據,請考慮使用64位系統。

另外,你應該考慮以下幾點:

According to the PHP manual,該memory_limit設置是比較重要的一個。如果它沒有提供足夠的內存,那麼後數據大小檢查就會通過,但是PHP沒有足夠的內存來實際處理後期數據。你會得到另一個錯誤,而不是內存超出。所以當你配置你的PHP時,請注意post_max_size小於memory_limit

在你的例子中memory_limit128M,所以它不能處理大於〜128兆字節大小的後數據。

This blog post shows what can happen and how large memory settings on 32bit and 64bit systems behave

+0

所以什麼你認爲我應該改變內存限制和後最大大小,我應該增加內存或改變張貼大小? – daza166 2011-06-11 13:53:42

+0

daza166:您要上傳的文件有多大?應一次上傳多少個文件? – hakre 2011-06-11 13:56:04

+0

可以同時上傳6張圖片,大小取決於照片大多數人可以上傳1MB以上。那天導致問題的照片是jpeg 982.6 KB(1006188字節) – daza166 2011-06-11 13:57:17

7

它看起來像你的「2000M」超過了整數限制。從manual

PHP允許對於位值的快捷方式,包括K(公斤),M(兆)和G(千兆)。如果您使用其中任何一種,PHP將自動執行轉換。請小心不要超過32位有符號整數限制(如果您使用的是32位版本),否則會導致腳本失敗。

嘗試一個較小的值,比如1000M。無論如何,2千兆字節的傳入數據可能不太可能。

+0

如果我需要上傳一個非常大的文件(比如約3GB)會怎麼樣? – nik 2012-09-26 07:04:48

+0

@nik我不確定。這裏有相關的討論:http://stackoverflow.com/questions/864570/very-large-uploads-with-php但我不確定有多少回答者實際上曾經嘗試*這樣*一個巨大的上傳 – 2012-09-26 17:58:16

相關問題