2014-05-22 116 views
0

我試圖使用文件輸入上傳一個3.5MB文件,但是當我嘗試上傳它時,我得到一個$ _FILES ['error'] == 2,我相信那是告訴我這個文件太大了。PHP文件上傳(3.5 MB)上傳

我能做些什麼來獲得這個上傳?

這裏是我的一些代碼:

<input type="hidden" name="MAX_FILE_SIZE" value="100000000000000000000000000000000000000000000000000000000000000"> 
<input type="file" id="home_pdf" name="home_pdf"> 

我的PHP設置如下:

post_max_size = 128M 
memory_limit = 128M 
max_file_uploads = 20 
max_execution_time = 30 
upload_max_filesize = 128M 
+0

100000000000000000000000000000000000000000000000000000000000000 ??? –

+1

您可能希望將表單的MAX_FILE_SIZE更改爲更合理的值,例如134217728(128M)。 – mts7

+0

'100000000000000000000000000000000000000000000000000000000000000 = OVERKILL;' –

回答

5

100000000000000000000000000000000000000000000000000000000000000是太大了一些,和溢出。改爲134217728(128MB)。

PHP在64位安裝中的最大int值爲9,223,372,036,854,775,807,在32位安裝上的值爲2,147,483,647。

我測試過這個,可以重現您的問題,並通過降低值得到修復。

參見POST method uploads

MAX_FILE_SIZE隱藏字段(以字節爲單位測量的)必須先於文件輸入字段,並且它的值是由PHP接受文件的最大尺寸。應該始終使用這個表單元素,因爲它可以節省用戶等待傳輸大文件的麻煩,從而發現它太大而傳輸失敗。請記住:在瀏覽器端欺騙此設置非常容易,因此請不要依賴此功能阻止更大尺寸的文件。這僅僅是應用程序客戶端用戶的便利功能。然而,PHP設置(在服務器端)的最大尺寸不能被愚弄。

+0

爲什麼downvote?我的回答是正確的:( –

2

您的MAX_FILE_SIZE字段太大。

from the PHP manual

UPLOAD_ERR_FORM_SIZE

值:2;上載的文件的大小超過了HTML形式

1

指定的MAX_FILE_SIZE指令根據文檔:

UPLOAD_ERR_FORM_SIZE

值:2;上傳的文件超出了HTML表單中指定的MAX_FILE_SIZE指令。

您應該檢查在HTML表單中指定的MAX_FILE_SIZE指令。

另外,如@BrandonWamboldt所述,您已爲MAX_FILE_SIZE指令指定了無效屬性值。

0

這可能聽起來很愚蠢,但有時需要在上傳腳本中爲php_ini添加設置。例如:

ini_set("max_execution_time", 120); 
ini_set("max_input_time", 120); 
ini_set("memory_limit", "128M"); 
ini_set("upload_max_filesize", "10M"); 
ini_set("post_max_size", "10M"); 

由於某種原因,這可行。我有一個類似的問題,那就是我的解決方案。 我的意見名MAX_FILE_SIZE和值100000000000000000000000000000000000000000000000000000000000000是真正的壞行爲,不建議可見。該部分在PHP上傳函數中定義並減少零的數量(值太大或太大)。