我可以通过register_shutdown_function('shutdown')
function shutdown(){
$error = error_get_last();
$result['message'] = $error['message'];
}
我有echo json_encode($result);
不幸的是,这个echo json_encode
没有显示任何内容,因为json没有更新致命错误的消息。
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
为什么要将一个数组移动到另一个数组然后回显第二个数组。
为什么不这样做呢
function shutdown(){
$error = error_get_last();
echo json_encode($error);
}
甚至是这个
function shutdown(){
echo json_encode(error_get_last());
}
除了使用不必要的数组外,这将为您提供get_last_error()
当然可能是error_get_last()
信息在关机过程的后期阶段才可用。如果是这种情况,那么您可以将额外的参数传递给关闭功能,这可能是您需要做的。
register_shutdown_function('shutdown', get_last_error());
和
function shutdown($last_error){
echo json_encode($last_error);
}
<强> EDITED 强>:
首先我添加了error_reporting(~E_ERROR); // don't report fatal errors
第一个对我有用的意思是
error_reporting(~E_ERROR); // don't report fatal
register_shutdown_function('shutdown');
function shutdown(){
$error = error_get_last();
if ($error['type'] === 1){
echo json_encode($error);
}
根据我的需要,我写道:
function shutdown(){
$error = error_get_last();
if ($error['type'] === 1){ // 1 means fatal error
$res['message'] = $error['message'];
$res['success'] = true;
header('Content-Type: application/json');
echo json_encode($res);
}
}