有没有办法在PHP中捕获eval致命错误?

时间:2015-08-16 16:59:28

标签: php exception eval fatal-error

我通过eval执行php代码列表,如果代码中有任何错误我想显示此代码有致命错误/解析错误。

有没有办法为致命错误或任何其他错误提供自定义消息

我的代码是这样的:

$output = [];
foreach($codes as $key => $res) {

    if(eval($res['code'])) {
        eval($res['code']);
        $output[$key] = $result;
    } else {
        $output[$key]  = "Fatal error in code";             
    }       
}
var_dump($output);

3 个答案:

答案 0 :(得分:1)

有办法!使用eval中的php -l将代码写入文件,然后删除该文件。请参阅我的答案,例如代码:

Is there any way to catch fatal error using eval()?

答案 1 :(得分:0)

尝试使用try-catch

将代码更改为
$output = [];
try {
foreach($codes as $key => $res) {
    if(eval($res['code'])) {
    eval($res['code']);
    $output[$key] = $result;
} else {
    $output[$key]  = "Fatal error in code";             
}  
}     
} catch (Exception $ex) {
var_dump($ex);

}

答案 2 :(得分:0)

诀窍是期待Throwable

try {
    ...
    @eval(...);
    ...
} catch(Throwable $t) {
    ...
}