打開php.ini 配置文件,查找 File Uploads ,在這個區域有以下3個選項:
file_uploads = On
是否允許HTTP文件上傳。默認值為On允許HTTP文件上傳,此選項不能設置為Off。
upload_tmp_dir =
文件上傳的臨時存放目錄。如果沒指定則PHP會使用系統默認的臨時目錄(windowsg下默認為C:\Windows\Temp)。該選項默認為空,你可以給這個選項賦值,比如upload_tmp_dir = "d:/fileuploadtmp" ,代表在D盤目錄下有一個fileuploadtmp目錄,並且給這目錄讀寫權限。
upload_max_filesize = 2M
上傳文件的最大尺寸。這個選項默認值為2M,即文件上傳的大小為2M,如果你想上傳一個50M的文件,你必須設定 upload_max_filesize = 50M。
但是僅設置upload_max_filesize = 50M 還是無法實現大文件的上傳功能,我們還必須修改php.ini文件中的 post_max_size 選項。
繼續在 php.ini 中查找 Data Handling ,在這個區域有1個選項:
post_max_size = 8M
指通過表單POST給PHP的所能接收的最大值,包括表單里的所有值。默認為8M。如果POST數據超出限制,那么$_POST和$_FILES將會為空。
要上傳大文件,你必須設定該選項值大於upload_max_filesize選項的值,例如你設置了upload_max_filesize = 50M ,這里可以把post_max_size = 100M。
另外如果啟用了內存限制,那么該值應當小於memory_limit 選項的值。
繼續在 php.ini 中查找 Resource Limits ,在這個區域有3個選項:
max_execution_time = 30
每個PHP頁面運行的最大時間值(單位秒),默認30秒。當我們上傳一個較大的文件,例如50M的文件,很可能要幾分鍾才能上傳完,但php默認頁面最久 執行時間為30秒,超過30秒,該腳本就停止執行,這就導致出現無法打開網頁的情況。因此我們可以把值設置的較大些,如 max_execution_time = 600。 如果設置為0,則表示無時間限制。
max_input_time = 60
每個PHP腳本解析請求數據所用的時間(單位秒),默認60秒。當我們上傳大文件時,可以將這個值設置的較大些。 如果設置為0,則表示無時間限制。
memory_limit = 128M
這個選項用來設置單個PHP腳本所能申請到的最大內存空間。這有助於防止寫得不好的腳本消耗光服務器上的可用內存。如果不需要任何內存上的限制將其設為 -1。
php5.2.0以前的版本默認8M; php.5.2.0版本默認為16M。php 5.2.0之后的版本默認為 128M;
php.ini 配置上傳文件功能 示例
假設要上傳一個50M的大文件。配置 php.ini 如下:
file_uploads = On
upload_tmp_dir = "d:/fileuploadtmp"
upload_max_filesize = 50M
post_max_size = 100M
max_execution_time = 600
max_input_time = 600
memory_limit = 128M
提示:需要保持 memory_limit > post_max_size > upload_max_filesize
此例僅供參考,你可以根據實際情況調整
如果是IIS+php環境下,配置完php后還要對IIS服務器進行配置,請看 IIS7 上傳 下載文件大小限制的設置
別忘了最后很重要的一點 要給於 上傳臨時文件目錄 和 文件最終保存目錄 給予讀寫權限