1

考虑以下代码:

try {
    include_once "malformedFile.php";
} catch(Exception $e) {
    return null;
}

我无法确保文件 malformedFile.php 是有效的 PHP 代码,不会崩溃或不会调用 die()。即使 malformedFile.php 死亡或崩溃,我怎样才能继续捕获?我的兴趣是使应用程序尽可能健壮,同时仍然允许用户通过包含实现自己的插件。

谢谢。

4

2 回答 2

3

不幸的是,你不能。如果包含的代码导致致命错误(例如语法错误),你就死定了。

可以尝试手动加载文件,然后调用eval

$code = file_get_contents("malformedFile.php");
eval($code);

当然,这是您在做之前应该三思而后行的事情,因为众所周知,这eval是邪恶的等等。

最强大的选择是生成另一个include为您执行此操作的进程(因此,如果它意外死亡也没什么大不了的),但是父进程和子进程之间的通信将比仅拥有一个进程要困难得多。

于 2012-08-16T09:30:27.617 回答
1

Include将包括来源,无法绕过它。

也许您可以将此文件称为外部进程并仅使用结果。这可以像 CLI 脚本或单独的 CURL 调用一样完成。

于 2012-08-16T09:32:10.093 回答