| 指令 | 預設 | 建議值 | 說明 |
|---|---|---|---|
upload_max_filesize | 2M | 100M | 單一檔案上限 |
post_max_size | 8M | 120M | POST 總資料上限,必須 > upload_max_filesize |
memory_limit | 128M | 256M | 腳本記憶體上限,需 > post_max_size |
max_execution_time | 30s | 0 (無限制) | 大檔上傳需更長執行時間 |
max_input_time | 60s | 300 | 解析輸入資料時間 |
php.ini,搜尋上述 5 項並修改httpd -k restart 或服務管理器重啟php -i | findstr upload_max 或 phpinfo()Nginx 預設 client_max_body_size 1m 會截斷大檔,導致 413 錯誤。
# nginx.conf / server / location 區塊
client_max_body_size 120m; # 應 >= php.ini post_max_size
# PHP-FPM 也需確認
# www.conf
php_admin_value[upload_max_filesize] = 100M
php_admin_value[post_max_size] = 120M
修改後:nginx -s reload、systemctl reload php-fpm
若單檔超過 200M,建議前端採用 分片上傳:
WebUploader、Plupload、Uppy 切片fopen('ab') 追加寫入| 現象 | 原因 | 解決 |
|---|---|---|
| $_FILES 為空 | post_max_size 過小 | 調大 post_max_size 並重啟 |
| 413 Request Entity Too Large | Nginx client_max_body_size | 調大 Nginx 設定並 reload |
| 上傳中斷無錯誤 | max_execution_time 過短 | 設為 0 或 300+ |
| 記憶體耗盡 | memory_limit 過小 | 調大或改用分片/流式處理 |
location ~ \.php$ { deny all; })