display_errors
- On:瀏覽器直接顯示錯誤詳情(開發環境適用)。
- Off:顯示通用「服務器錯誤」,隱藏敏感信息(生產環境**必須關閉**)。
風險:開啟時會暴露路徑、數據庫結構、變量值等,助長攻擊。
log_errors
- 生產環境推薦開啟,將錯誤寫入日誌文件而非輸出頁面。
- 默認寫入 Web 服務器錯誤日誌(Apache
error.log)。
- 可指定專用文件:
error_log = /var/log/php-error.log。
- 或寫入系統日誌:
error_log = syslog。
推薦生產配置
display_errors = Off
log_errors = On
error_log = /var/log/php-error.log
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
error_reporting 級別對照
| 常量 | 值 | 說明 |
| E_ERROR | 1 | 致命運行錯誤 |
| E_WARNING | 2 | 運行警告 |
| E_PARSE | 4 | 編譯時解析錯誤 |
| E_NOTICE | 8 | 運行提示(如未定義變量) |
| E_ALL | 2047 | 所有錯誤/警告/提示 |
| E_STRICT | 2048 | 代碼標準化建議 |
7 = 1+2+4 僅報告 Error/Warning/Parse。
運行時動態控制
// 禁用所有錯誤報告
error_reporting(0);
// 僅報告運行時錯誤
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// 報告所有
error_reporting(E_ALL);
display_errors=Off 失效排查
若 log_errors=On 但 error_log 未配置或無寫入權限,PHP 會 fallback 輸出到標準輸出,導致 display_errors=Off 失效。解決:正確設置 error_log 路徑並賦予寫入權限,或關閉 log_errors。
- 上一篇文章: 域名與 Cookie 作用域詳細解析(一級/二級域名、公共後綴)
- 下一篇文章: PHP 將 HTML 內容生成 Word 文檔並提供下載的完整解決方案
Copyright ©
程式碼之家 All Rights Reserved