PHP 合理配置實現檔案上傳

來源:互聯網
上載者:User

合理配置 php.ini

如何配置php.ini實現PHP檔案上傳功能。其中涉及到php.ini設定檔中的upload_tmp_dir、upload_max_filesize、post_max_size等選項,這些選項是檔案上傳成敗的關鍵。我以php.5.3 的版本為例說明。

開啟php.ini 設定檔,尋找 file_uploads ,在這個地區有以下3個選項:

file_uploads = On

是否允許HTTP檔案上傳。預設值為On允許HTTP檔案上傳,此選項不能設定為Off。

upload_tmp_dir =

檔案上傳的臨時存放目錄。如果沒指定則PHP會使用系統預設的臨時目錄。該選項預設為空白,此選項在手動設定PHP運行環境時,也容易遺忘,如果不配置這個選項,檔案上傳功能就無法實現,你必須給這個選項賦值,比如upload_tmp_dir = "/home/tmp" ,代表在home目錄下有一個tmp目錄,並且給這目錄賦予所有使用者讀寫權限。

upload_max_filesize = 2M

上傳檔案的最大尺寸。這個選項預設值為2M,即檔案上傳的大小為2M,如果你想上傳一個50M的檔案,你必須設定 upload_max_filesize = 50M。
但是僅設定upload_max_filesize = 50M 還是無法實現大檔案的上傳功能,我們還必須修改php.ini檔案中的 post_max_size 選項。

max_file_uploads = 20

設定一次最多允許上傳檔案的數量

繼續在 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 = "/home/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
此例僅供參考,你可以根據實際情況調整。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.