解決PHP大文件上傳問題

PHP大文件上傳問題    今天負責創業計劃大賽的老師問我做品上報系統上傳不了大文件,我當時納悶了,作的時候沒限制上傳文件的大小阿,怎麼會傳不了呢,本身親自體驗了番,果真不 行,想了好一下子纔有點眉目,網上一查,果真問題就出在PHP的配置上,沒花多少功夫就搞定了。
   
    下面簡單介紹下php上傳文件涉及到的參數:
   
    0:文件上傳時存放文件的臨時目錄。必須是 PHP 進程全部者用戶可寫的目錄。若是未指定則 PHP 使用系統默認值
   
    php.ini文件中upload_tmp_dir用來講明PHP上傳的文件放置的臨時目錄。
   
    要想上傳文件,得保證服務器沒有關閉臨時文件和有對文件夾的寫權限
   
    1:max_execution_time
   
    變量max_execution_time設置了在強制終止腳本前PHP等待腳本執行完畢的時間,此時間以秒計算。當腳本進入了一個無限循環狀態 時此變量很是有用。然而,當存在一個須要很長時間完成的合法活動時(例如上傳大型文件),這項功能也會致使操做失敗。在這樣的狀況下必須考慮將此變量值增 加,以免PHP在腳本正在執行某些重要過程的時候將腳本關閉。
   
    max_execution_time = 90
   
    2:file_uploads = On
   
    3:upload_max_filesize = 2M
   
    4:post_max_size
   
    同表單提交相關的一個變量是post_max_size,它將控制在採用POST方法進行一次表單提交中PHP所可以接收的最大數據量。彷佛不大 可能須要將默認的8 MB改得更大。相反,應當適當將其降到更爲實際的數值。但若是但願使用PHP文件上傳功能,則須要將此值改成比upload_max_filesize還 要大。
   
    post_max_size = 8M
   
    5:max_input_time
   
    此變量能夠以秒爲單位對經過POST、GET以及PUT方式接收數據時間進行限制。若是應用程序所運行環境處在低速鏈路上,則須要增長此值以適應接收數據所需的更多時間。
   
    max_input_time = 90
   
    6:memory_limit
   
    memory_limit = 8M
   
    爲了不正在運行的腳本大量使用系統可用內存,PHP容許定義內存使用限額。經過memory_limit變量來指定單個腳本程序可使用的最大內存容量
   
    變量memory_limit的值應當適當大於post_max_size的值
   
    如何實現php大文件上傳:
   
    一個簡單的配置例子,你們能夠參考下:
   
    打開php.ini,首先找到
   
    file_uploads = on ;是否容許經過HTTP上傳文件的開關。默認爲ON便是開
   
    upload_tmp_dir ;文件上傳至服務器存儲臨時文件的地方,若是沒指定就會用系統默認的臨時文件夾
   
    upload_max_filesize = 8m ;望文生意,即容許上傳文件大小的最大值。默認爲2M
   
    post_max_size = 8m ;指經過表單POST給PHP的所能接收的最大值,包括表單裏的全部值。默認爲8M
   
    通常地,設置好上述四個參數後,上傳<=8M的文件是不成問題,在網絡正常的狀況下。
   
    但若是要上傳>8M的大致積文件,只設置上述四項還必定能行的通。除非你的網絡真有100M/S的上傳高速,不然你還得關心關心下面的參數
   
    max_execution_time = 600 ;每一個PHP頁面運行的最大時間值(秒),默認30秒
   
    max_input_time = 600 ;每一個PHP頁面接收數據所需的最大時間,默認60秒
   
    memory_limit = 8m ;每一個PHP頁面所吃掉的最大內存,默認8M
   
    把上述參數修改後,在網絡所容許的正常狀況下,就能夠上傳大致積文件了
php

相關文章
相關標籤/搜索