2011-04-18 40 views
4

如果有人能夠向我解釋PHP錯誤處理的體系結構,我會很高興。一些具體問題是:自定義PHP錯誤處理程序是否尊重PHP配置?

  • 默認錯誤處理程序在什麼階段讀取相關的PHP配置選項?
  • 自定義錯誤處理程序是否完全忽略這些選項?
  • 如何使自定義錯誤處理程序尊重配置?

回答

4

這幾乎是你懷疑的。自定義錯誤處理程序必須探測所有設置本身並作出相應的反應。

set_error_handler example首先檢查當前的活動誤差水平,並將其與它表示當前的錯誤類型的第一個回調參數(按位和):

if (!(error_reporting() & $errno)) { 

但最初測試,如果你實際上都應該打印錯誤,你還需要:

ini_get("display_errors") or return; 

還是要應對更多的設置和仿效的默認錯誤處理程序,甚至ini_get("html_errors")等。除非你做的一切,手動,用戶錯誤處理程序會顯示所有錯誤。它們不被過濾,回調接收一切。


PHP的默認錯誤處理程序是在這裏行850 php_error_cb
http://svn.php.net/viewvc/php/php-src/trunk/main/main.c?revision=309647&view=markup#855

它確實有點多,但還查詢INI註冊表。這就是error_reporting總是將當前狀態保存到。

+0

謝謝!這回答了我所有的問題! – markus 2011-04-18 08:12:54