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

时间:2010-03-06 12:24:33

标签: php plugins

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

目前,如果任何文件有一些解析错误,它会导致完整的事情发生故障,直到我入侵数据库以删除该插件条目。

有没有简单的方法可以做到这一点? (以某种方式检查文件是否至少有解析错误)?

2 个答案:

答案 0 :(得分:4)

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

Check_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请求很昂贵。在每次插入插件时,您都不应该这样做,但在安装时只应执行一次。使用某种标志(例如插件名称前面的下划线_)来启用/禁用插件。

答案 1 :(得分:0)

没有。解析错误是您无法从中恢复的致命错误。