在做一個簡單的表單上傳測試時,服務端的PHP指令碼中,$_FILES 數組為空白;這樣就不能擷取從瀏覽器上傳的資訊.什麼原因呢?
通過Google,找到下面這個 php上傳檔案$_FILES 數組為空白的解決辦法:
用php做上傳檔案的應用時,在後台列印$_FILES時發現為空白數組,出現這個問題可能有以下兩個原因:
表單類型原因或者php設定問題: 表單類型
上傳檔案的表單編碼類別型必須設定成 enctype=”multipart/form-data”,因為要傳大資料,一般提交方式用POST php設定問題:
php預設的post_max_size 為2M.如果 POST 資料尺寸大於 post_max_size , $_POST 和 $_FILES 超全域變數便會為空白. 解決的方法是:
一般的檔案上傳,除非檔案很小.就像一個5M的檔案,很可能要超過一分鐘才能上傳完. 但在php中,預設的該頁最久執行時間為 30 秒.就是說超過30秒,該指令碼就停止執行. 這就導致出現 無法開啟網頁的情況.這時我們可以修改 max_execution_time 在php.ini裡尋找 max_execution_time 預設是30秒.改為 max_execution_time = 0(可修改範圍為PHP_INI_ALL) 0表示沒有限制
或者在php檔案頭設定ini_set(‘max_execution_time’,0); 修改 post_max_size 設定 POST 資料所允許的最大大小。此設定也影響到檔案上傳。 尋找 post_max_size .改為 post_max_size = 150M(可修改範圍為PHP_INI_PHP_INI_PERDIR) 很多人都會改了第二步.但上傳檔案時最大仍然為 8M. 為什麼呢.我們還要改一個參數upload_max_filesize 表示所上傳的檔案的最大大小。 尋找upload_max_filesize,預設為8M改為 upload_max_filesize = 100M(可修改範圍為PHP_INI_PHP_INI_PERDIR)
另外要說明的是post_max_size是整個表達的大小,而upload_max_filesize是上傳檔案的大小,前者應大於後者.