PHP:register_shutdown_function并不总是与Symfony 2一起使用

时间:2012-05-03 08:26:26

标签: php error-handling symfony

我正在尝试使用register_shutdown_function'捕获'PHP致命错误,这样我就可以返回一条干净的错误消息。

在一个简单的PHP文件中,下面的两个测试用例都得到了正确处理,并返回了我的自定义500错误。

register_shutdown_function('handleShutdown');

//Test Case #1
$nullVar = null;
$nullVar->test();

//Test case #2
$uninitialisedVar->test();


function handleShutdown()
{
$error = error_get_last();
if ($error !== NULL)
{
    ob_clean();
    header('HTTP/1.0 500 Internal Server Error');
    echo 'Something bad happened';
}
}

但是,当在控制器内的Symfony 2操作中使用相同的机制时,不再处理测试用例#2:我的处理程序仅在变量之前被初始化时被调用。但是,在这两种情况下,我们都处理相同类型的致命错误(对非对象调用成员方法)。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在调试模式下,Symfony2调用可能与set_error_handler冲突的register_shutdown_function。在生产模式中,它不会发生。