ModX:insert_metka函数在哪里?
问题描述:
我有我的镆铘埃沃网站抛出这个错误的问题:ModX:insert_metka函数在哪里?
Fatal error: Cannot redeclare insert_metka() (previously declared in /home/mysite/public_html/manager/includes/document.parser.class.inc.php(794) : eval()'d code:2) in /home/mysite/public_html/manager/includes/document.parser.class.inc.php(794) : eval()'d code on line 12'
我已经搜查,搜查,但找不到在哪里insert_metka()声明。我甚至下载了整个网站并且无济于事地进行搜索。我也尝试将版本更新到最新版本,也无济于事。
任何人都可以告诉我在哪里可以找到这个功能吗?
答
下载数据库转储并在其中查找此行。看起来这是一个插件故障,请尝试禁用插件,直到找到它。有关更多建议,请参阅ModX Evo: PHP error in document.parser.class.inc.php。
答
正如您从错误代码中看到的,该函数是在代码片段中声明的。这是因为Modx有这种缓存片段来加速性能。他们将你的片段的静态文件封装为一个函数。
如果同一个函数被调用两次并且你声明了一个函数,这可能会导致错误。我怀疑这是怎么回事。
为了解决这个问题,只是包装你的整个功能function_exists
像这样:
if (!function_exists("insert_metka")) {
function insert_metka() {
// Stuff goes here
}
}
旁注:这是除了由VASIS给出了答案。你应该搜索你的片段,演员和插件。它应该位于这些文件的某个位置。这不是从Modx核心提供的功能。
是的,你不会在文件搜索中找到该功能,因为插件+片段存储在数据库中。尽量不要发表重复的问题;) – okyanet
谢谢!那样做了。对于任何正在查看的人来说,它都位于Quick ManagerManger代码片段中。 – MeltingDog