Не удается переопределить класс Magento

У меня есть интересная проблема. Внешний интерфейс моего сайта загружается нормально, однако, когда я пытаюсь перейти к:

domain.com/index.php/admin

Я получил белую страницу. Я включил режим отладки, и он отображает эту ошибку:

Array ( [type] => 64 [message] => Cannot redeclare class Mage_Admin_Model_Session [file] => /var/www/vhosts/domain.co.uk/sub-domain.co.uk/includes/src/__adminhtml.php [line] => 504 )

Найдя эту новую ошибку, я попытался закомментировать / удалить каждый класс, который не может быть повторно объявлен в файле __adminhtml.php, один за другим. Только чтобы найти это к тому времени, как я закомментировал их все и обновил администратора страница, это не дает никакой ошибки вообще. Просто белая страница.

Есть идеи?

1 ответ

Решение

Вот несколько советов по устранению неполадок, которые вы можете попытаться найти, как найти причину проблемы.

Этот фрагмент покажет вам, где данный класс был определен ранее:

$className = 'Foo';
if ( class_exists( $className ) ) {
  $rc = new ReflectionClass($className);
  print __FILE__.':'.__LINE__. ": Class $className already defined in " 
    . $rc->getFileName() . ":" . $rc->getStartLine();
}

Вы можете сделать то же самое для функций; просто используйте function_exists а также ReflectionFunction вместо.

Похоже, где-то файл включен / требуется дважды. Если это __adminhtml.php файл, который включается один раз слишком часто, вы можете добавить вызов debug_print_backtrace() чтобы увидеть, откуда это включается.

Кроме того, если у вас есть настроенные файлы, вы можете использовать require_once вместо require,

Другие вопросы по тегам