ModX Evo:document.parser.class.inc.php中的PHP错误

时间:2013-03-18 05:28:15

标签: php content-management-system modx modx-evolution

所以我的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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这似乎是一个非常简单的问题。您宣布insert_metka()两次。从其中一个提到的文件中删除它。一旦在保存的文件中声明它,并且显然是第二次尝试在eval()

的帮助下声明它

答案 2 :(得分:0)

Cannot redeclare insert_metka()说你要宣告一个函数两次(可能是你的遗嘱)。

您应该检查所包含的文件。

为确保不会包含多次,您可以使用include_oncerequiere_once代替includerequiere

答案 3 :(得分:0)

根据document.parser.class.inc.php此行,我猜您使用的是OOP

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

还有其他事情。您可以在同一class内{{1}}使用相同的功能。