2014-09-24 2 views
0

Я включаю файл с классом GroupManager, который eval'd с IP.content. Я получил ошибку, что класс уже определен. Если я не включу, я не получу ошибок. Если переименовать класс, я не получаю никаких ошибок (однако я уверен, этот класс не существует в другом месте.) Я попытался следующим в случае были множественными включает в себя (я лично с помощью include_once ...):Класс уже объявлен в PHP и IP.Content?

if(!class_exists('GroupManager')) { 
    class GroupManager { 
    } 
} 

я все еще получаю ошибку:

Cannot redeclare class GroupManager in ... GroupManager.php on line 37 

Очевидно, что нет строки 37 в моем файле 4 строки.

Если я удаляю объявление класса и заменяю его эхо-сигналом, я не получаю никакой ошибки, и это нормально, что означает, что класс не существует в этой точке.

if(!class_exists('GroupManager')) { 
    echo "Class does not exist???"; 
} 

Я не уверен, как отладить это.

+0

"eval'd with IP.content"? А? –

+0

Является ли «IP.content» ссылкой на Invision Powerboard? – TML

+0

Это популярный плагин в IP Board. Извините, я понимаю, что это сбивает с толку. Плагин по существу вызывает eval в коде, который я ему кормлю. (Я не уверен, насколько он обрабатывает этот код до его оценки.) – user1405177

ответ

0

Я нашел проблему, и я должен был поймать ее намного раньше ... Другой администратор включил этот файл в крючок. Крюк, по-видимому, запускается на каждой странице, хотя на каждой странице не требуется крючок ... Таким образом, не было моей мысли проверить крючки.

Если у кого-то есть странные проблемы с IPB, убедитесь, что вы используете grep для include/require. Это сэкономит вам много хлопот.

Что-то, как это должно дать вам представление о том, где файл включаются:

grep -r include_name.php . 

Это будет проверять все файлы рекурсивно из текущей директории.

Смежные вопросы