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

PHP 大檔案上傳完整配置指南:突破 8MB 預設限制

     編輯:PHP 綜合知識

PHP 預設上傳限制為 2MB,實務上常需支援超大檔案(如影片、安裝包)。本文系統整理 php.ini 關鍵參數、Apache/Nginx 相關設定與程式碼層面注意事項,助你一次配置成功。

核心 php.ini 參數(四大金剛)

參數預設值說明建議值(>100MB 範例)
file_uploadsOn啟用 HTTP 上傳On
upload_max_filesize2M單一檔案最大值200M
post_max_size8MPOST 總資料上限(含所有表單欄位)210M (需 > upload_max_filesize)
upload_tmp_dir系統暫存目錄暫存檔儲存路徑(需可寫入、空間足夠)/var/tmp/php_upload

執行階段資源限制(大檔案必調)

參數預設值說明建議值
max_execution_time30腳本最大執行秒數(0=無限制)600
max_input_time60接收 POST 資料最大秒數600
memory_limit128M腳本記憶體上限(處理大檔案時可能飆升)512M

Web Server 層面補充設定

Nginx

# nginx.conf 或 site conf
client_max_body_size 210m;  # 必須 >= post_max_size
proxy_read_timeout 600s;    # 反向代理時防止上傳中斷

Apache (mod_php / php-fpm)

# httpd.conf 或 .htaccess
LimitRequestBody 220200960  # 210MB(bytes),僅適用 mod_php
# php-fpm 需在 pool 設定 php_admin_value[post_max_size] 等

前端表單必要屬性

進階:分塊上傳與斷點續傳

超過 500MB 或行動裝置環境,建議採用前端切片(如 Resumable.js、Uppy)配合後端合併策略,避免單一請求超時、記憶體暴漲。

常見坑點排查清單

  1. 修改 php.ini 後**必須重啟 php-fpm / Apache / Nginx** 生效。
  2. post_max_size 必須 **大於** upload_max_filesize,否則大檔案會被截斷且 $_FILES['file']['error'] 回傳 1(UPLOAD_ERR_INI_SIZE)。
  3. 檢查 upload_tmp_dir 目錄權限(chown www-data:www-data /var/tmp/php_upload && chmod 755)。
  4. 若使用 $_FILES['file']['tmp_name'] 處理,記得 move_uploaded_file() 完成後原暫存檔會自動刪除,若需保留請先複製。
  5. SELinux / AppArmor 可能阻擋寫入非標準暫存目錄,臨時關閉或設定正確 context。

總結

大檔案上傳涉及 PHP、Web Server、前端、作業系統多層限制,逐項排查並配合分塊上傳架構,才能打造穩定可靠的上傳體驗。建議將上述參數集中管理於 Ansible/Docker Compose 等部署腳本,避免環境不一致導致上線事故。

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