首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 錯誤日誌配置:display_errors 與 log_errors 區別及最佳實踐

     編輯:PHP 綜合知識

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 級別對照

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。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
常量值說明
E_ERROR1致命運行錯誤
E_WARNING2運行警告
E_PARSE4編譯時解析錯誤
E_NOTICE8運行提示(如未定義變量)
E_ALL2047所有錯誤/警告/提示
E_STRICT2048代碼標準化建議