Так что мой сайт 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
Я устал комментировать строку нарушения и удалить весь файл безрезультатно. Кто-нибудь знает, что это значит и как это исправить?
EDIT: код в строке 790:
eval ($pluginCode);
Похоже, плохой плагин сломал ваш сайт. Отключите все свои плагины и восстановите их по одному, пока он не сломается снова, тогда вы знаете, какой из них является виновником.
Как только вы это сделаете, разместите здесь код плагина, и мы сможем помочь вам отладить его дальше. Вам не нужно будет изменять исходный код MODX.
Проблема, вероятно, будет решена путем упаковки объявления insert_metka()
следующим образом:
if(!function_exists('insert_metka')) { function insert_metka() { // function code } }
Это кажется очень простой проблемой. Вы объявляете insert_metka()
два раза. Удалите его из одного из указанных файлов. Как только он объявлен в сохраненном файле и, видимо, второй раз вы пытаетесь объявить его с помощью eval()
Cannot redeclare insert_metka()
говорит, что вы дважды объявляете функцию (может быть, с вашими оценками).
Вы должны проверить свои включенные файлы.
Чтобы не включать более одного раза, вы можете использовать include_once
или requiere_once
вместо include
и requiere
Соглашаясь на document.parser.class.inc.php
эту строку, я думаю, вы используете OOP
.
Итак, что вы можете сделать, это создать класс создания instantiation
для class
выше, а затем overwrite
его.
Есть и другие вещи. вы можете declaring
одну и ту же функцию внутри одного class
.