php限制上傳大小
越來越多的童鞋在使用PHPstudy來搭建網站, ,PHPstudy搭建php+mysql的網站還是非常不錯的,主要就是可以隨意切換php版本,但是不少童鞋在用php程序上傳文件時候,默認限制的只能上傳2M大小的文件,在這里說下如何修改這個上傳限制大小。
總共修改三個地方
post_max_size
max_execution_time
max_input_time
下圖所示
打開修改這三個裡面的值,不知道修改成多少的,直接在原有數字後面加個0即可,一般夠用了
2. 如何通過配置php文件限制上傳文件的大小
在網站開發的過程中,為了確保能夠充分利用伺服器的空間,在開發上傳功能時,必須對上傳文件的大小進行控制。那麼我們如何進行對上傳文件的大小進行控制呢?
控制文件的大小可以從兩個方面入手:
第一個是在PHP的配置文件php.ini中對上傳文件進行控制,如果上傳文件超過它指定的范圍,那麼執行上傳就會識別。
第二個是在PHP配置文件允許的范圍內,在程序中對上傳文件的大小進行控制!
一:通過配置文件控制上傳文件
PHP中通過php.ini文件對上傳文件進行控制,包括是否支持上傳,上傳文件的臨時文件目錄,上傳文件的大小,指令執行時間,指令分配的內存空間。
在php.ini中,定義 File Uploads項,完成對上傳相關選項的設置。上傳相關選項的含義如下:
file_uploads:如果值是 no,說明伺服器支持上傳文件,如果為off ,那麼則不支持。一般默認是支持的,這個不用修改!
upload_tmp_dri:上傳文件臨時目錄。文件被成功上傳之前,文件首先存放到伺服器端的臨時目錄中。多數使用系統默認目錄,但是也可以自行設置!
upload_max_filesize:伺服器允許上傳文件的最大值,以MB為單位,系統默認為2MB,如果網站需要上傳超過2MB的數據,那麼就要修改這個值!
上述是php.ini中 File_Uploads項中與上述相關參數設置說明,除了File_Uploads項中的內容外,在php.ini中還有其他幾個選項會影響到文件的上傳~
max_execution_time:PHP中一個指令所能執行的最大時間,單位為秒。該選項在上傳超大文件時必須要修改,否則即使上傳文件在伺服器允許的范圍內,但是若超過了指令所能執行的最大時間,仍然無法實現上傳~
memory_limit:PHP中一個指令所分配的內存空間,單位是 MB 。它的大小同樣會影響得到超大文件的上傳!
二:在程序中控制上傳文件
在客戶端控制上傳文件應用的是 form 表單中的 enctype 和 method屬性以及隱藏域 MAX_FILE_SIZE。
enctype = 「multipart/form-data」:指定表單編碼數據方式。
method = 「post」:指定數據的傳輸方式。
<input type = "hidden" name="MAX_FILE_SIZE" value=「10000」/>:通過隱藏域控制上傳文件的大小(單位為位元組),該值不能超過php.ini配置文件中 upload_max_filesize 選項設置的值,它不能喝完全控制上傳文件的大小。只是可以避免一些不必要的麻煩。
技巧:
在應用隱藏域<input type = "hidden" name="MAX_FILE_SIZE" value=「10000」/>控制文件上傳大小時,必須將其放置在文件域之前,否則是不能發揮作用的!
3. 如何突破php上傳文件大小限制
1. 一般的php文件上傳,除非文件很小.就像一個5M的文件,很可能要超過一分鍾才能上傳完.
但在php中,默認的該頁最久執行時間為 30 秒.就是說超過30秒,該腳本就停止執行.
這就導致出現 無法打開網頁的情況.這時我們可以修改 max_execution_time
在php.ini里查找
Java代碼
max_execution_time
默認是30秒.改為
max_execution_time = 0
0表示沒有限制
以上修改的是php上傳文件中腳本執行超時時間
2. 修改 post_max_size 設定 POST 數據所允許的最大大小。此設定也影響到php上傳文件。
php默認的post_max_size 為2M.如果 POST 數據尺寸大於 post_max_size $_POST 和 $_FILES superglobals 便會為空.
查找 post_max_size .改為
3. 修改了第二步,但php上傳文件時最大仍然為 8M。
為什麼呢.我們還要改一個參數upload_max_filesize 表示所上傳的文件的最大大小。
查找upload_max_filesize,默認為8M改為
Java代碼
post_max_size=150M
Java代碼
upload_max_filesize=100M
4. php上傳問題 在上傳不成功的情況下,當上傳文件大於10M(大概數)時就會報錯,而不是根據程序提示,
你說的10M應該是php.ini里設置的上傳文件大小限制,而你這個switch判斷是基於表單上傳文件大小來判斷的,兩者毫無相關!
一、超過10M,在php底層處理請求時就直接報錯了,根本執行不到你switch的地方,所以報錯是非預期的
二、超過2M,php能正常執行,所以會按照你switch來報錯
這里,你要搞清楚php的上傳文件大小限制跟form表單上傳文件大小限制的關系