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

Discuz! 論壇大文件上傳優化實戰:php.ini 參數深度調教與後台配置

     編輯:PHP 相關知識

PHP 上傳核心參數解析

參數預設建議值(大檔)說明
file_uploadsOnOn總開關
upload_tmp_dir系統預設/data/tmp/upload獨立分區、noexec、大空間
upload_max_filesize2M50M單檔上限
post_max_size8M60MPOST 總體上限,必須 > upload_max_filesize
max_execution_time30300腳本最大執行秒數
max_input_time60300接收 POST 資料最大秒數
memory_limit8M128M腳本記憶體上限,需 > post_max_size

Discuz 後台對應設定

  1. 全局 → 上傳附件設置:最大附件大小(Byte)設為 52428800 (50MB)。
  2. 版塊權限 → 允許上傳附件:勾選相關用戶組。
  3. 附件類型管理:新增允許副檔名(zip、rar、pdf 等),設置圖示。
  4. 圖片附件縮略圖:啟用 GD/ImageMagick 自動生成。

大檔上傳進階調優(>50MB)

# php.ini 額外參數
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 200M
upload_max_filesize = 150M

# Apache mod_security / mod_reqtimeout 可能攔截大請求,需調整或關閉
# Nginx 需同步設定
client_max_body_size 200m;
client_body_timeout 600s;
proxy_read_timeout 600s;

Linux 系統層面檢查

  • /etc/httpd/conf.d/php.conf 或 apache2.conf 中是否有 LimitRequestBody 限制。
  • 檔案系統 ulimit -n 開啟檔案描述符數、磁碟配額。
  • 網路帶寬:上傳 100MB 需 8Mbps 以上專線才能在合理時間完成。

常見故障排查

現象可能原因排查指令
上傳即時失敗,無錯誤日誌post_max_size 過小php -i | grep post_max_size
上傳到 90% 斷開max_execution_time / max_input_time 不足tail -f /var/log/php-fpm/error.log
移動檔案失敗 (move_uploaded_file false)upload_tmp_dir 與目標目錄跨分區、權限不足ls -ld /data/tmp/upload /var/www/html/attachments
Discuz 後台顯示「附件上傳失敗」後台最大附件大小未同步修改檢查 pre_common_setting 表 attachmaxsize
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved