萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP.ini 核心配置指南:效能、安全與環境調優完整解析

php.ini 核心角色

php.ini 是 PHP 執行期的核心配置檔,控制記憶體限制、錯誤處理、檔案上傳、擴展載入、Session 管理等數百項設定。正確調優對效能、安全、穩定性至關重要。

配置檔載入順序

  1. 當前工作目錄下的 php.ini
  2. PHPRC 環境變數指定路徑
  3. 編譯時指定的預設路徑(Windows 為系統目錄,Linux 為 /etc/php/版本/php.ini)
  4. CLI 模式可用 -c 參數覆蓋

核心區塊詳細解析

🔧 語言核心選項

指令預設值建議生產值說明
engineOnOn啟用 PHP 引擎
short_open_tagOnOff關閉短標籤 <? ?>,提升可移植性
precision1414浮點數顯示精度
output_bufferingOff4096開啟輸出緩衝,減少網路封包,允許 header 後發送
expose_phpOnOff隱藏 HTTP Header 中的 PHP 版本資訊(安全)
max_execution_time3030-60腳本最大執行秒數(0=無限制,僅 CLI)
memory_limit128M256M-512M單腳本記憶體上限,視應用調整

🛡️ 錯誤處理與日誌(生產環境關鍵)

指令開發環境生產環境說明
error_reportingE_ALLE_ALL & ~E_DEPRECATED & ~E_STRICT回報等級
display_errorsOnOff❌ 生產環境絕不可開啟,洩漏敏感資訊
display_startup_errorsOnOff啟動階段錯誤顯示
log_errorsOnOn✅ 必須開啟錯誤日誌
error_log/var/log/php/error.log/var/log/php/error.log指定日誌路徑,需可寫入權限
log_errors_max_len10240 (無限制)單筆日誌最大長度
ignore_repeated_errorsOffOn忽略重複錯誤減少日誌噪音
html_errorsOnOff生產環境關閉 HTML 格式化

📁 檔案上傳與資源限制

指令預設值建議值說明
file_uploadsOnOn啟用 HTTP 檔案上傳
upload_max_filesize2M10M-100M單檔上傳上限,需搭配 post_max_size
post_max_size8M> upload_max_filesizePOST 資料總上限,必須 > upload_max_filesize
max_file_uploads2020-50單次請求最大檔案數
upload_tmp_dir系統暫存目錄/tmp/php_uploads指定專用暫存目錄,確保權限安全

🌐 網路與資料處理

指令預設值建議值說明
allow_url_fopenOnOff❌ 禁用遠端檔案存取(安全),改用 cURL
allow_url_includeOffOff嚴禁包含遠端檔案(極高風險)
default_socket_timeout6030Socket 逾時秒數,避免掛住
variables_orderEGPCSGPCS移除 E(ENV) 減少變數汙染
request_orderGPGP$_REQUEST 合併順序,建議不含 C(Cookie)
max_input_vars10003000-5000防止 HashDoS 攻擊,複雜表單需調大

💾 Session 管理

指令預設值建議值說明
session.save_handlerfilesfiles/redis/memcached分散式環境需用共享儲存
session.save_path/tmp/var/lib/php/sessions檔案儲存路徑,可用 N;MODE;PATH 分層
session.gc_maxlifetime14401440-7200Session 存活秒數(24分鐘-2小時)
session.cookie_httponlyOffOn✅ 防止 XSS 竊取 Session ID
session.cookie_secureOffOn (HTTPS)✅ 僅 HTTPS 傳輸 Cookie
session.use_strict_modeOffOn✅ 防止 Session Fixation 攻擊
session.sid_length3248Session ID 長度,越長越安全

🚀 效能優化關鍵設定

指令建議值影響
realpath_cache_size4096K路徑解析快取,大型專案必調大
realpath_cache_ttl300快取存活秒數
opcache.enable1✅ 必須開啟 OPcache(PHP 5.5+ 內建)
opcache.memory_consumption128-256OPcache 共享記憶體 (MB)
opcache.max_accelerated_files10000-20000快取檔案數上限,設大於專案檔案數
opcache.validate_timestamps1(開發)/0(生產)生產環境關閉以獲最大效能,部署需重啟 PHP
opcache.jit1255 (PHP 8+)啟用 JIT 編譯,CPU 密集型任務提升明顯

🔒 安全相關(必須檢查)

  • disable_functions:exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,pcntl_exec, 等危險函式
  • disable_classes:禁用敏感類別
  • open_basedir:限制檔案操作目錄,如 /var/www/:/tmp/
  • session.cookie_samesite:Lax 或 Strict(PHP 7.3+)防禦 CSRF

環境差異化配置策略

開發環境

display_errors = On
error_reporting = E_ALL
opcache.validate_timestamps = 1
xdebug.mode = develop,debug

生產環境

display_errors = Off
log_errors = On
error_log = /var/log/php/error.log
opcache.validate_timestamps = 0
expose_php = Off
allow_url_fopen = Off
session.cookie_secure = 1
session.cookie_httponly = 1

驗證配置生效

<?php
// 1. CLI 檢查
php -i | grep "memory_limit"

// 2. 網頁端檢查
phpinfo(); // 搜尋 "Loaded Configuration File"

// 3. 程式碼檢查特定值
echo ini_get('memory_limit'); // 回傳字串
echo ini_get('display_errors'); // 回傳 "1" 或 "0"
?>

總結:生產環境必檢清單

  1. ✅ display_errors = Off
  2. ✅ log_errors = On + error_log 路徑正確
  3. ✅ expose_php = Off
  4. ✅ allow_url_fopen = Off
  5. ✅ session.cookie_httponly = On + session.cookie_secure = On (HTTPS)
  6. ✅ opcache.enable = 1 + 記憶體/檔案數調優
  7. ✅ disable_functions 含危險函式
  8. ✅ open_basedir 限制存取路徑
  9. ✅ memory_limit / max_execution_time 符合業務需求
  10. ✅ upload_max_filesize < post_max_size

妥善配置 php.ini 是 PHP 應用穩定、安全、高效運行的基石。建議將配置納入版本控制,採用環境變數覆蓋或多環境配置檔策略管理差異。

copyright © 萬盛學電腦網 all rights reserved