0

所以我的 Evo 网站前几天停止工作 - 刚刚收到 500 错误。我让我的主机检查日志并发现:

[error] PHP Fatal error:  Cannot redeclare insert_metka() (previously declared in 
/home/mysite/public_html/manager/includes/document.parser.class.inc.php(790) : eval()'d code:2) 
in /home/mysite/public_html/manager/includes/document.parser.class.inc.php(790) : eval()'d code on line 12

我已经厌倦了注释掉有问题的行并删除整个文件无济于事。有谁知道这意味着什么以及如何解决它?

编辑:第 790 行的代码:

  eval ($pluginCode);
4

4 回答 4

1

看起来一个糟糕的插件破坏了您的网站。禁用所有插件并一次恢复一个,直到它再次中断,然后您就知道哪个是罪魁祸首。

完成后,在此处发布插件代码,我们可以帮助您进一步调试。您永远不需要修改 MODX 源代码。

这个问题很可能通过insert_metka()像这样包装声明来解决:

if(!function_exists('insert_metka')) {
    function insert_metka() {
        // function code
    }
}

http://wiki.modxcms.com/index.php/Creating_Snippets#Wrap_functions_inside_.21function_exists_conditional_if_the_resource_is_needed_to_run_more_than_once_on_a_page

于 2013-03-18T09:15:00.737 回答
0

Cannot redeclare insert_metka()表示您要声明一个函数两次(可能与您的评估一起使用)。

您应该检查包含的文件。

为确保不包含超过一次,您可以使用include_onceorrequiere_once代替includeandrequiere

于 2013-03-18T05:30:47.087 回答
0

根据document.parser.class.inc.php这条线,我猜你正在使用OOP.

所以你可以做的是instantiation为上面创建类,class然后overwrite是它。

还有其他事情。您可能declaring在相同的内部具有相同的功能class

于 2013-03-18T05:32:24.480 回答
0

这似乎是一个非常简单的问题。你声明insert_metka()了两次。从上述文件之一中删除它。一旦它在保存的文件中声明,显然第二次你试图在帮助下声明它eval()

于 2013-03-18T05:29:33.260 回答