核心配置指令
| 指令 | 默認值 | 說明 |
display_errors | Off | 是否在頁面輸出錯誤信息。生產環境必須 Off,開發環境 On。 |
display_startup_errors | Off | PHP 啟動階段錯誤(如擴展載入失敗)是否顯示。 |
error_reporting | E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED | 錯誤報告級別位掩碼。 |
log_errors | Off | 是否記錄錯誤到日誌。 |
error_log | NULL | 錯誤日誌文件路徑(需寫入權限)。 |
錯誤級別常量對照表
| 值 | 常量 | 說明 |
| 1 | E_ERROR | 致命運行時錯誤,腳本終止 |
| 2 | E_WARNING | 運行時警告,腳本繼續 |
| 4 | E_PARSE | 編譯時語法解析錯誤 |
| 8 | E_NOTICE | 運行時通知(如未定義變量) |
| 16 | E_CORE_ERROR | PHP 初始化致命錯誤 |
| 32 | E_CORE_WARNING | PHP 初始化警告 |
| 64 | E_COMPILE_ERROR | 編譯時致命錯誤 |
| 128 | E_COMPILE_WARNING | 編譯時警告 |
| 256 | E_USER_ERROR | 用戶觸發致命錯誤 |
| 512 | E_USER_WARNING | 用戶觸發警告 |
| 1024 | E_USER_NOTICE | 用戶觸發通知 |
| 2048 | E_STRICT | 代碼標準化建議(PHP 5.4+ 併入 E_ALL) |
| 4096 | E_RECOVERABLE_ERROR | 可捕獲的致命錯誤 |
| 8191 | E_ALL | 所有錯誤(PHP 5.4+ 含 E_STRICT) |
配置最佳實踐
開發環境 php.ini
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = "/var/log/php_errors.log"
生產環境 php.ini
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
log_errors = On
error_log = "/var/log/php_errors.log"
html_errors = Off
運行時動態控制(無 php.ini 權限時)
<?php
// 開發調試
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
// 生產環境臨時調試單腳本
ini_set('display_errors', '0');
error_reporting(E_ALL & ~E_NOTICE);
ini_set('log_errors', '1');
ini_set('error_log', __DIR__ . '/php_error.log');
修改生效注意事項
- 修改
php.ini 後**必須重啟 PHP-FPM/Apache** 生效。
- CLI 模式讀取独立
php.ini(通常為 /etc/php/cli/php.ini),需單獨修改。
.user.ini(PHP 5.3+)可在目錄級覆蓋部分配置,適合虛擬主機。