考虑以下代码:
try {
include_once "malformedFile.php";
} catch(Exception $e) {
return null;
}
我无法确保文件 malformedFile.php 是有效的 PHP 代码,不会崩溃或不会调用 die()。即使 malformedFile.php 死亡或崩溃,我怎样才能继续捕获?我的兴趣是使应用程序尽可能健壮,同时仍然允许用户通过包含实现自己的插件。
谢谢。
考虑以下代码:
try {
include_once "malformedFile.php";
} catch(Exception $e) {
return null;
}
我无法确保文件 malformedFile.php 是有效的 PHP 代码,不会崩溃或不会调用 die()。即使 malformedFile.php 死亡或崩溃,我怎样才能继续捕获?我的兴趣是使应用程序尽可能健壮,同时仍然允许用户通过包含实现自己的插件。
谢谢。
不幸的是,你不能。如果包含的代码导致致命错误(例如语法错误),你就死定了。
您可以尝试手动加载文件,然后调用eval
:
$code = file_get_contents("malformedFile.php");
eval($code);
当然,这是您在做之前应该三思而后行的事情,因为众所周知,这eval
是邪恶的等等。
最强大的选择是生成另一个include
为您执行此操作的进程(因此,如果它意外死亡也没什么大不了的),但是父进程和子进程之间的通信将比仅拥有一个进程要困难得多。
Include
将包括来源,无法绕过它。
也许您可以将此文件称为外部进程并仅使用结果。这可以像 CLI 脚本或单独的 CURL 调用一样完成。