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

動態調整 PHP 錯誤報告等級:error_reporting 實戰

     編輯:PHP 相關知識

問題場景

某虛擬主機預設 error_reporting 極為敏感,連未定義變數(E_NOTICE)都輸出警告,導致頁面滿屏錯誤訊息。無法修改 php.ini,需在程式碼中動態控制。

error_reporting 函數語法

int error_reporting(int $level = null);

參數為位元遮罩,常用常數:

常數值說明
E_ERROR1致命執行錯誤,腳本終止
E_WARNING2執行警告,不終止腳本
E_PARSE4編譯時解析錯誤
E_NOTICE8運行時提示(如未定義變數),非必然錯誤
E_CORE_ERROR16PHP 核心啟動致命錯誤
E_CORE_WARNING32PHP 核心啟動警告

解決方案

<?php
// 僅顯示嚴重錯誤與解析錯誤,隱藏 NOTICE、WARNING 等
error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING);

// 等價數值寫法
error_reporting(1 | 4 | 16 | 32); // = 53
?>

置於腳本最開頭(或通用引入檔),即可屏蔽 Undefined variable 等干擾訊息,保留關鍵錯誤可見性。

常用組合推薦

  • 開發環境:E_ALL(或 E_ALL & ~E_DEPRECATED & ~E_STRICT)
  • 生產環境:E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING
  • 僅記錄不顯示:ini_set('display_errors', '0'); error_reporting(E_ALL); 配合 error_log。

注意事項

  • error_reporting(0) 會關閉所有錯誤報告,**除錯極度困難,生產環境也不建議完全關閉**。
  • PHP 5.4+ 新增 E_STRICT、E_DEPRECATED 等常數,組合時請查閱對應版本文件。
  • 框架通常自行管理錯誤處理器,避免直接呼叫此函數衝突。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved