【发布时间】:2014-10-27 07:00:38
【问题描述】:
所以我在 php.ini 中设置了:
error_reporting = E_ERROR
我已经写了一个处理程序:
register_shutdown_function( "fatal_handler" );
function fatal_handler() {
$errfile = "unknown file";
$errstr = "shutdown";
$errno = E_CORE_ERROR;
$errline = 0;
$error = error_get_last();
if( $error !== NULL) {
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
if($errno == E_ERROR){
$html = 'some html here';
print($html);
die();
}
}
}
我为测试它所做的就是在一个脚本中设置比 max_execution_time 更长的睡眠时间。出于某种原因,如果我在加载故意损坏的页面时在不同的选项卡中打开一个新页面,这也会杀死其他页面。没关系,但是当第二页崩溃时,它会给我一个 error_get_last() 警告。但我将 error_reporting 设置为 1!为什么它向我显示警告?它没有记录它,但它导致我无法捕捉到导致白屏的错误,这正是这段代码应该避免的!
【问题讨论】:
标签: php error-handling error-reporting