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

悪いプラグインがあなたのサイトを壊したようです。すべてのプラグインを無効にし、一度に 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

この行によるとdocument.parser.class.inc.php、私はあなたが使用していると思いますOOP

したがって、あなたができることはinstantiation、上記のクラスを作成してclassからそれを作成するoverwriteことです。

他にもあります。declaring同じの中で同じ機能をするかもしれませんclass

于 2013-03-18T05:32:24.480 に答える
0

それは非常に単純な問題のように見えます。insert_metka()あなたは2回宣言しています。上記のファイルのいずれかから削除します。保存されたファイルで宣言され、明らかに2回目は、の助けを借りて宣言しようとしていますeval()

于 2013-03-18T05:29:33.260 に答える
0

Cannot redeclare insert_metka()関数を2回宣言していると言っています(evalsである可能性があります)。

含まれているファイルを確認する必要があります。

複数の時間を含めないようにするために、 andの代わりにinclude_onceorを使用できます。requiere_onceincluderequiere

于 2013-03-18T05:30:47.087 に答える