配置檔案載入順序
PHP 依序讀取:當前工作目錄 → 環境變數 PHPRC → 編譯時指定路徑(Windows 為安裝目錄)。CLI 模式可用 -c 指定。語法採 指示 = 值,分號 ; 開頭為註解,區段標題 [Section] 目前被忽略。
核心區段詳解
1. 語言引擎與基礎行為 [PHP]
| 指示 | 預設 | 建議/說明 |
| engine | On | 關閉可禁用 PHP 解析 |
| short_open_tag | On | 建議 Off,避免與 XML 衝突,統一用 <?php |
| asp_tags | Off | ASP 標籤 <%,已棄用 |
| precision | 14 | 浮點數顯示精度 |
| output_buffering | Off | 建議 4096,允許輸出後送 header,微幅影響效能 |
| implicit_flush | Off | 僅除錯開啟,否則嚴重拖慢效能 |
| expose_php | On | 建議 Off,隱藏 HTTP Header X-Powered-By |
2. 資源限制 Resource Limits
| 指示 | 預設 | 建議 |
| max_execution_time | 30 | 視業務調整,CLI 為 0(無限制) |
| memory_limit | 8M | 現代應用建議 128M~512M |
3. 錯誤處理 Error handling
| 指示 | 建議(生產) | 說明 |
| error_reporting | E_ALL & ~E_NOTICE & ~E_DEPRECATED | 隱藏提示與棄用警告 |
| display_errors | Off | 嚴禁生產開啟,洩露路徑資訊 |
| log_errors | On | 寫入錯誤日誌 |
| error_log | /var/log/php/error.log | 指定專屬日誌路徑,確保可寫 |
4. 資料處理 Data Handling
variables_order = "GPCS":移除 E(環境變數)提升效能。
register_globals = Off:必須關閉,防止變數注入攻擊(PHP 5.4+ 已移除)。
post_max_size = 8M、upload_max_filesize = 2M:依業務調大,post_max_size > upload_max_filesize。
magic_quotes_gpc = Off:已棄用,改用預處理語句防注入。
5. 路徑與目錄 Paths and Directories
include_path:多路徑用 :(Linux)或 ;(Windows)分隔。
extension_dir:擴充套件目錄,enable_dl = Off(生產環境禁用動態載入)。
6. 模組設定精選
- Session:
session.save_handler = redis、session.save_path = "tcp://127.0.0.1:6379"、session.gc_maxlifetime = 1440、session.cookie_httponly = 1、session.use_strict_mode = 1。
- MySQL/MariaDB:
mysqlnd 為預設驅動,持久連線 mysqli.allow_persistent = On 搭配連線池使用。
- OPcache(PHP 5.5+ 內建):
opcache.enable=1、opcache.memory_consumption=128、opcache.max_accelerated_files=10000、opcache.revalidate_freq=60、opcache.enable_cli=1。
調優檢查清單
- 關閉
expose_php、display_errors、register_globals。
- 啟用 OPcache 並依專案檔案數調整
max_accelerated_files。
- 設定專屬
error_log,定期輪轉。
- Session 改用 Redis/Memcached,支援分散式部署。
- 上傳限制依實際需求調整,避免過大導致 DoS。