簡體   English   中英

使用PHP上傳大於2GB的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM