eval()和PHP错误

时间:2010-07-30 20:59:03

标签: php error-handling eval

我有像这样的评估函数

if(FALSE === @eval($code)) echo 'your code has php errors';

因此,如果代码有synthax错误,它将返回该消息。

问题是,如果在代码中你有类似的东西:

  require_once('missing_file.php');

它只会破坏页面,没有我的错误消息:(

有没有解决方法呢?

1 个答案:

答案 0 :(得分:2)

好吧,首先我希望$code来自可靠来源,并且您正在执行用户发送的任意代码。

其次,我看到你可以解决的唯一方法就是将$code保存到文件中,使用命令行PHP解释器运行它,然后检查退出值。请注意,传递此测试不会导致$code致命错误,只是发生了脚本的特定执行没有引发任何致命错误;可能还有其他代码路径会触发此类错误。

这是因为一旦eval触发致命错误,就无法恢复并且脚本死亡。如果存在解析错误,eval仅返回FALSE