0

我的 ModX Evo 网站遇到了抛出此错误的问题:

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() 的位置。我什至下载了整个网站并进行了搜索,但无济于事。我也尝试将版本更新到最新版本,也无济于事。

谁能告诉我在哪里可以找到这个功能?

4

2 回答 2

2

下载数据库转储并在其中查找此行。似乎是其中一个插件的故障,请尝试禁用插件,直到找到它为止。有关更多建议,请参阅ModX Evo:document.parser.class.inc.php中的 PHP 错误。

于 2013-04-02T07:21:34.727 回答
0

正如您从错误代码中看到的那样,该函数是在片段中声明的。这是因为 Modx 有这种缓存片段的方式来加速性能。他们将您的片段的静态文件包装为一个函数。

如果同一个函数被调用两次并且您在其中声明了一个函数,这可能会导致错误。我怀疑这就是这里发生的事情。

要解决这个问题,只需像这样包装整个函数function_exists

if (!function_exists("insert_metka")) {
    function insert_metka() {
        // Stuff goes here
    }
}

旁注:这是对Vasis给出的答案的补充。您应该搜索您的片段、附加内容和插件。它应该位于这些文件中的某个位置。它不是 Modx 核心提供的功能。

于 2013-04-02T14:40:09.513 回答