| 配置檔 | 適用場景 | 核心特性 | PHP 5.3+ 新命名 |
|---|---|---|---|
php.ini-dist | 開發/測試環境 | 錯誤顯示開啟、嚴格標準報告、寬鬆安全設置 | php.ini-development |
php.ini-recommended | 生產/上線環境 | 錯誤隱藏、安全加固、效能優化、建議值預設 | php.ini-production |
php.ini-dist (開發) 與 php.ini-recommended (生產)php.ini-development 與 php.ini-production,語義更清晰error_reporting 排除 E_DEPRECATED),但兩檔定位不變| 指令 | php.ini-development | php.ini-production | 影響 |
|---|---|---|---|
| display_errors | On | Off | 生產環境防止敏感資訊洩露到瀏覽器 |
| display_startup_errors | On | Off | 同上 |
| error_reporting | E_ALL | E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED | 生產環境降低日誌噪音 |
| log_errors | On | On | 兩者都建議開啟日誌記錄 |
| expose_php | On | Off | 生產環境隱藏 PHP 版本資訊 |
| register_globals | Off | Off | PHP 5.4+ 已移除,歷史遺留 |
| magic_quotes_gpc | Off | Off | PHP 5.4+ 已移除 |
| allow_url_include | Off | Off | 防止遠程檔案包含漏洞 |
| session.use_only_cookies | 1 | 1 | 防 Session Fixation 攻擊 |
| session.cookie_httponly | 1 | 1 | 防 XSS 竊取 Session ID |
| output_buffering | Off | 4096 | 生產環境開啟 4KB 緩衝提升吞吐 |
| zlib.output_compression | Off | Off | 建議由 Web 伺服器 (Nginx/Apache) 處理壓縮 |
| max_execution_time | 30 | 30 | 同 |
| memory_limit | 128M | 128M | 同,視應用調整 |
php.ini-production 為 php.ini 作為所有環境基準display_errors=On、error_reporting=E_ALL、xdebug.mode=developproduction 預設,關閉所有顯示類錯誤php.ini 納入專案配置管理 (Ansible/Docker/Chef),避免手動修改導致環境漂移php.ini-production 差異,同步調整自定義配置誤區: 「開發環境用
php.ini-development,生產用php.ini-production,直接改名即可。」真相: 兩份檔案只是預設值基準,實際部署仍需根據具體應用調整關鍵參數 (如
memory_limit、post_max_size、date.timezone、extension_dir、資料庫連線池設定等)。絕不可直接改名上線。
# 安裝後對比兩份檔案差異
diff -u /etc/php/7.4/fpm/php.ini-development /etc/php/7.4/fpm/php.ini-production | less
# 或使用圖形化工具
meld /etc/php/7.4/fpm/php.ini-development /etc/php/7.4/fpm/php.ini-production
理解 php.ini-development (舊 dist) 與 php.ini-production (舊 recommended) 的設計初衷與差異,是構建安全、穩定、可維護 PHP 環境的基礎。以 production 為基準,按環境微調,配合自動化部署工具落地,才是專業的配置管理之道。