自定义PHP错误处理程序是否尊重PHP配置?

时间:2011-04-18 07:45:14

标签: php error-handling

如果有人能向我解释PHP错误处理的架构,我会很高兴。一些具体问题是:

  • 默认错误处理程序在什么阶段读取相关的PHP配置选项?
  • 自定义错误处理程序是否完全忽略这些选项?
  • 如何让自定义错误处理程序尊重配置?

1 个答案:

答案 0 :(得分:5)

这就像你怀疑的那样。自定义错误处理程序必须自己探测所有设置并做出相应的反应。

set_error_handler example首先检查当前活动错误级别,并将其与第一个回调参数(按位和)进行比较,该参数表示当前错误类型:

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

但是为了最初测试你是否真的应该打印错误,你还需要:

ini_get("display_errors") or return;

或者对更多设置做出反应并模拟默认错误处理程序,甚至是ini_get("html_errors")等。除非您手动执行所有操作,否则您的用户错误处理程序将显示所有错误。它们不会被过滤,回调会收到所有内容。


这里的PHP默认错误处理程序是php_error_cb:第850行 http://svn.php.net/viewvc/php/php-src/trunk/main/main.c?revision=309647&view=markup#855

它做了一些,但也查询ini注册表。这就是error_reporting始终将当前状态保存到的地方。