Не удается переопределить класс 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
,