2010-10-28 62 views
3

我有一個可以上傳文件的PHP應用程序。當我上傳的大多數文件,並做了print_r($_FILES),我得到的是這樣的:上傳文件太大時無法正常工作

Array 
(
    [import] => Array 
     (
      [name] => Array 
       (
        [excel_file] => COD MKTG 2.csv 
       ) 

      [type] => Array 
       (
        [excel_file] => application/vnd.ms-excel 
       ) 

      [tmp_name] => Array 
       (
        [excel_file] => /tmp/phpy8mEKn 
       ) 

      [error] => Array 
       (
        [excel_file] => 0 
       ) 

      [size] => Array 
       (
        [excel_file] => 1584286 
       ) 

     ) 

) 

我還有一個CSV文件,它更像是13兆字節,當我嘗試上傳,我得到這個:

Array 
(
    [import] => Array 
     (
      [name] => Array 
       (
        [excel_file] => COD MKTG.csv 
       ) 

      [type] => Array 
       (
        [excel_file] => 
       ) 

      [tmp_name] => Array 
       (
        [excel_file] => 
       ) 

      [error] => Array 
       (
        [excel_file] => 1 
       ) 

      [size] => Array 
       (
        [excel_file] => 0 
       ) 

     ) 

) 

我沒有得到任何錯誤,說該文件太大。我只是得到了一個畸形的$_FILES。我已將php.ini中的post_max_size設置爲100MB。這是爲什麼發生?

+0

仔細檢查它是PHP實際使用的php.ini文件,而不是副本 – 2010-10-28 15:37:45

+0

好的建議 - 以前燒過我。但在這種情況下,情況也是如此。 – 2010-10-28 15:49:40

回答

12

按照PHP的文檔,錯誤代碼1是UPLOAD_ERR_INI_SIZE:「上傳的文件超過了php.ini中的upload_max_filesize指令」

您需要確保所有的fol降脂變量設置正確:

upload_max_filesize - 在上載的任何單個文件的最大尺寸
max_file_uploads - 允許上傳
post_max_size文件的總數 - 被張貼總和的所有數據(表單數據+文件)
memory_limit - 必須>的post_max_size,以便用於PHP +腳本開銷

而且最重要的是,還有的Web服務器的限制,以及。 Apache的獲得LimitRequestBody這將在PHP進入圖片之前很久以前應用。

+1

+1 for webserver LimitRequestBody參考 – 2010-10-28 15:41:24

+0

原來是'upload_max_filesize'。我可以告訴,因爲錯誤代碼是「1」:http://php.net/manual/en/features.file-upload.errors.php – 2010-10-28 18:25:18

+0

是的。那是你原來的帖子。 – 2010-10-28 18:30:48

1

更改內存限制以及 memory_limit = 8M;

也許20?

也許執行時間

的max_execution_time

編輯:

確保其不執行時間看它......

,如果你有一個非常緩慢的互聯網連接也可能是

max_input_time

它必須是其中的一個或有什麼問題你的腳本 或者您沒有正確設置設置

memory_limit的

的max_execution_time

max_input_time設置

+0

不,我的memory_limit是128M,我仍然在256獲得相同的結果。我的腳本也沒有超時。 – 2010-10-28 15:21:31

+0

更新了答案 – Breezer 2010-10-28 15:29:09

0

您也可以嘗試你的根目錄

php_value upload_max_filesize 128M 
php_value post_max_size 128M 
php_value max_execution_time 200 
php_value max_input_time 200 
0

據我所知,PHP有大文件的問題,當涉及到文件系統函數內的.htaccess文件設置這些值。 32位編譯的PHP有2147483647作爲PHP_INT_MAX,這意味着大於〜2G的文件不會打開,搜索等。這個數字在64位編譯的PHP [大約4 +萬億字節 - 8字節的有符號整數是]中更大。

在此刻,我試圖解決這個問題[我正在嘗試將JumpLoader集成到我的CMS項目中。這是完成的,除了與這個2G翻蓋問題有關的部分 - 不能在大於2G的文件上工作],所以一旦我得到了這個解決方案,就會分享它。

現在祝你好運。

相關問題