[英]Uploading a file larger than 2GB using PHP
我正在嘗試將大於2GB的文件上傳到本地PHP 5.3.4服務器。 我設置了以下服務器變量:
memory_limit = -1
post_max_size = 9G
upload_max_filesize = 5G
但是,在error_log中我發現:
PHP警告:POST內容長度2120909412字節超過了第0行的Unknown中1073741824字節的限制
誰能告訴我為什么這會一直失敗呢?
我有類似的問題,但我的配置是:
post_max_size = 1.8G
upload_max_filesize = 1.8G
然而我無法上傳1.2GB文件。 錯誤非常相似:
PHP Warning: POST Content-Length of 1347484420 bytes exceeds the limit of 1073741824 bytes in Unknown on line 0
我花了一天的時間想知道這個“極限1073741824”來自哪里!
方案 :
實際上,錯誤發生在php.ini解析器中:它只能理解INTEGER數字,所以基本上它將1.8G
解析為1G
!!
將值更改為例如1800M
修復它。
請確保使用以下命令service apache2 restart重新啟動 apache服務器
我在5.3.x中不知道,但在5.2.x中,PHP代碼中存在一些int / long問題。 即使您使用的是64位系統並且使用64位編譯的PHP版本,也存在一些問題。
首先,將post_max_size和其他從ascii轉換為整數的代碼將值存儲在int中,因此轉換“9G”並將結果放入此int會使值變大,因為9G是一個比32位變量更大的數字保持。
但是還有一些PHP代碼的其他區域與Apache模塊,CGI等一起使用,需要從int更改為long。
所以...為了實現這一點,你需要編輯PHP代碼並手動編譯(確保將其編譯為64位)。 這是一個差異列表的鏈接:
http://www.archive.org/~tracey/downloads/patches/karmic-64bit-post-large-files.patch
從這個php bug帖子中引用: http : //bugs.php.net/bug.php?id = 44522
上面的文件是5.2.10代碼上的差異,但我只是手動更改為5.2.17代碼,我剛剛通過apache / php上傳了一個3.4gb的單個文件(在更改之前沒有工作)。
有幫助的ope。
也許這可以來自POST大小的apache限制:
http://httpd.apache.org/docs/current/mod/core.html#limitrequestbody
似乎對64G安裝的2Gb的這種限制可能更大。 而且我不確定在此指令中設置0是否達不到編譯限制。 看一下線程的例子:
http://ubuntuforums.org/archive/index.php/t-1385890.html
然后不要忘記改變PHP中的max_input_time。
但是你達到了極限:-)也許你可以在瀏覽器端嘗試一個富客戶端(flash?js?),用塊或某種FTP進行傳輸,並為用戶提供進度指示器。
正如phliKtid所說,這是PHP框架的一個限制。 保存用於編輯錯誤報告 phliKtid鏈接中提到的源代碼,有一種解決方法,涉及在php.ini文件中將upload_max_filesize
設置為0。
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 0
通過這樣做,PHP在嘗試將“5G”轉換為32位整數時不會崩潰,並且您將能夠使用“post_max_size”變量上傳文件大小。
我弄清楚如何使用http和php上傳10G文件。
php.ini中:
post_max_size = 0
upload_max_filesize = 0
它適用於php 5.3.10。
如果你沒有將該文件全部加載到內存中,則memory_limit是無關的。
我們遇到了同樣的問題:上傳停止在2GB。
在SLES(SUSE Linux Enterprise Server)11 SP 2下,php53就是問題所在。
然后我們添加了一個包含php54的新存儲庫: http : //download.opensuse.org/repositories/server :/ php / SLE_11_SP2 /
並升級到那個,我們現在可以上傳5GB :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.