我通过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);
答案 0 :(得分:1)
有办法!使用eval中的php -l
将代码写入文件,然后删除该文件。请参阅我的答案,例如代码:
答案 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) {
...
}