首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 大檔案上傳 php.ini 完整設定指南

     編輯:PHP 相關知識

PHP 大檔案上傳 php.ini 完整設定指南

預設 PHP 限制上傳檔案 2MB,若需支援大檔案(如 100MB+),必須調整 php.ini 多項參數,並考量網路傳輸時間與記憶體限制。

1. 檔案上傳核心參數

參數預設建議值(大檔案)說明
file_uploadsOnOn啟用 HTTP 檔案上傳
upload_tmp_dir系統暫存目錄/tmp 或專用目錄暫存檔存放路徑,需可寫且空間足夠
upload_max_filesize2M200M單一檔案最大值
post_max_size8M210MPOST 總資料上限,必須 ≥ upload_max_filesize + 表單其他欄位

2. 資源限制參數(關鍵)

參數預設建議值說明
max_execution_time30600 (秒)腳本最大執行時間,上傳大檔需更久
max_input_time60600 (秒)接收 POST 資料最大時間
memory_limit8M128M+腳本記憶體上限,處理大檔案時可能需更多

3. 設定範例(支援 200MB 上傳)

; php.ini
file_uploads = On
upload_tmp_dir = /var/tmp/php_upload
upload_max_filesize = 200M
post_max_size = 210M
max_execution_time = 600
max_input_time = 600
memory_limit = 256M

4. 伺服器層面同步調整

  • Nginx:client_max_body_size 210M; 在 http 或 server 區塊。
  • Apache:LimitRequestBody 220200960(位元組)。
  • PHP-FPM:request_terminate_timeout = 600 防止進程被強制終止。

5. 程式碼端注意事項

  • 使用 $_FILES['file']['tmp_name'] 搬移檔案時,若跨分區需 move_uploaded_file(同分區可 rename)。
  • 大檔案建議採用分塊上傳(Chunked Upload),前端切片(如 WebUploader、Uppy),後端合併,避免單一請求超時。
  • 驗證檔案類型勿信任 $_FILES['type'],改用 finfo_file 或 mime_content_type 檢測真實 MIME。

6. 測試驗證

修改完成後重啟 PHP-FPM / Apache,上傳一個 200MB 測試檔,觀察 $_FILES['error'] 是否為 UPLOAD_ERR_OK (0)。若出現 UPLOAD_ERR_INI_SIZE (1) 或 UPLOAD_ERR_FORM_SIZE (2),再檢查上述參數是否生效(phpinfo() 確認)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved