Я включаю файл с классом GroupManager, который eval’d с IP.content. Я получил ошибку, что класс уже определен. Если я не включаю, я не получаю ошибок. Если я переименую класс, я не получу ошибок (однако я уверен, что этот класс не существует где-либо еще). Я попробовал следующее в случае нескольких включений (я лично использовал include_once …):
if( !class_exists('GroupManager') ) {
class GroupManager {
}
}
Я все еще получаю ошибку:
Cannot redeclare class GroupManager in ... GroupManager.php on line 37
Очевидно, что в моем 4-строчном файле нет строки 37.
Если я удаляю объявление класса и заменяю его эхом, я не получаю никакой ошибки, и это нормально, а значит, класс не существует в этой точке.
if( !class_exists('GroupManager') ) {
echo "Class does not exist???";
}
Я не уверен, как даже отладить это.
Я обнаружил проблему, и я должен был ее поймать намного раньше … Другой администратор включил этот файл в ловушку. Хук, очевидно, запускается на каждой странице, хотя каждая страница не требует хука … Таким образом, я не думал проверять хуки.
Если у кого-то есть странные проблемы с включением в IPB, убедитесь, что вы используете grep для include / require. Это избавит вас от многих хлопот.
Что-то вроде этого должно дать вам представление о том, куда включается файл:
grep -r include_name.php .
Это будет проверять все файлы рекурсивно из текущего каталога.
Других решений пока нет …