PHP忽略自定义错误处理程序

时间:2012-12-19 08:45:51

标签: php

  

可能重复:
  How do I catch a PHP Fatal Error

我想创建一个自定义错误处理程序,但PHP忽略它仍然使用内置错误处理程序。下面的示例给出了内置的致命错误,因为未定义test():

 function critical_error($error_number,$error_string,$error_file,$error_line,$error_context) {
     echo "<strong>error:</strong> echo ".$error_string;
     exit();
 }

 set_error_handler("critical_error",8191);
 test();
 exit;

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

您可能错误地定义了错误级别。尝试使用:

set_error_handler("critical_error", E_ALL);

另请注意:

  

使用用户定义无法处理以下错误类型   功能:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,   E_COMPILE_ERROR,E_COMPILE_WARNING和大多数E_STRICT在   调用set_error_handler()的文件。

但如果没有完整的脚本(包括test()),很难说清楚。我在我的本地服务器上测试过,一切正常。