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

mar*_*kus 5 php error-handling

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

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

mar*_*rio 5

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

所述的set_error_han dler示例首先检查当前的活动误差水平,并将其与它表示当前的错误类型的第一个回调参数(按位和):

if (!(error_reporting() & $errno)) {
Run Code Online (Sandbox Code Playgroud)

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

ini_get("display_errors") or return;
Run Code Online (Sandbox Code Playgroud)

或者对更多设置做出反应并模拟默认错误处理程序,甚至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#1855

它做了一些,但也查询ini注册表.这就是error_reporting总是保存当前状态的地方.