我设置了一个set_exception_handler和一个set_error_handler来正确处理异常和错误,但仍然没有发现'致命错误'。
我试过了:
register_shutdown_function( "fatal_handler" );
function fatal_handler()
{
FlashMessages::flashIt( 'message', 'Fatal error' );
include( Settings::ABSPATH . '/src/views/message.php' );
$error = error_get_last();
if ( $error !== null ) {
$errno = $error[ "type" ];
$errfile = $error[ "file" ];
$errline = $error[ "line" ];
$errstr = $error[ "message" ];
var_dump( $error );
}
}
我确实能够转储错误,但是没有办法避免页面顶部出现完整的堆栈错误。 我怎么能避免显示错误堆栈?
答案 0 :(得分:2)
register_shutdown_function( "fatal_handler" );
function fatal_handler()
{
$error = error_get_last();
if ( $error[ "type" ] == 1) { //only fatal errors
$errno = $error[ "type" ];
$errfile = $error[ "file" ];
$errline = $error[ "line" ];
$errstr = $error[ "message" ];
FlashMessages::flashIt("'$errstr' in $errfile in line $errline ", 'Fatal error');
include( Settings::ABSPATH . '/src/views/message.php' );
}
}
并且不要显示php输出的生产中的错误。
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);