如果生成错误,则禁用文件include(在php中)

如果生成错误,则禁用文件include(在php中),php,plugins,Php,Plugins,我想为我的脚本实现一个简单的插件系统。我将包括用户选择的可用插件文件 目前,如果任何文件有一些解析错误,它会导致整个过程停止,直到我侵入数据库删除插件条目 有什么简单的方法可以做到这一点吗?(至少检查文件是否存在解析错误)?否。解析错误是一个致命错误,您无法从中恢复。您可以向尝试包含该文件的PHP文件发出HTTP请求,并在最后输出“OK” 选中_include.php: $filename = $_GET["plugin"]; $filename = sanitize_filename($fi

我想为我的脚本实现一个简单的插件系统。我将包括用户选择的可用插件文件

目前,如果任何文件有一些解析错误,它会导致整个过程停止,直到我侵入数据库删除插件条目


有什么简单的方法可以做到这一点吗?(至少检查文件是否存在解析错误)?

否。解析错误是一个致命错误,您无法从中恢复。

您可以向尝试包含该文件的PHP文件发出HTTP请求,并在最后输出“OK”

选中_include.php:

$filename = $_GET["plugin"];

$filename = sanitize_filename($filename); // Here you make sure only plugins can be loaded

include ($filename);
echo "OK";
然后,在你的管理面板或任何地方,打电话

file_get_contents("http://mydomain/check_include.php?plugin=my_new_plugin");
并查看结果是否包含单词“OK”。如果结果正常,没有致命错误,可以激活插件;否则,您甚至可以在尝试包含时输出得到的错误消息

WordPress使用了一个包含IFRAME的变体来检查新插件


注意:发出HTTP请求是昂贵的。在任何情况下,您都不应该在每次包含插件时都这样做,但只能在安装时这样做一次。使用某种标志(例如,在插件名称前加下划线)来启用/禁用插件。

有很多方法可以解决这个问题,请参阅我的答案。我认为
文件\u get\u内容
不会调用PHP解析器。@Aistina这正是问题的关键:您向本地web服务器上的PHP脚本发出HTTP请求,调用解析器的新实例。这样,如果include崩溃,它将对当前运行的脚本没有影响。