Неустранимая ошибка: Вызов функции-члена rewrite() на не-объекте после обновления
Мы попытались обновить нашу установку Magento с 1.7.0.2 до 1.8.0.0. Теперь мы получили следующую ошибку на всех страницах:
Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php on line 165
Мы попытались очистить все кэши, отключить и перекомпилировать компилятор и переиндексировать индексатор. Ранее сегодня все прошло хорошо на нашей локальной установке. Это та же установка, за исключением некоторых заказов и данных клиента.
Когда компилятор включен, ошибка изменяется на:
Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/includes/src/__default.php on line 17761
Как мы можем устранить эту ошибку?
7 answers
Глядя на строку 165
#File: app/code/core/Mage/Core/Controller/Varien/Front.php
$this->_getRequestRewriteController()->rewrite();
Метод _getRequestRewriteController
должен возвращать объект. По какой-то причине он не возвращает объект в вашей системе.
Взглянув на это определение метода, мы видим следующее
protected function _getRequestRewriteController()
{
$className = (string)Mage::getConfig()->getNode('global/request_rewrite/model');
return Mage::getSingleton('core/factory')->getModel($className, array(
'routers' => $this->getRouters(),
));
}
Маг просматривает узел конфигурации global/request_rewrite/model
, чтобы найти псевдоним класса. В системе магазинов это должно быть
core/url_rewrite_request
, который Magento затем использует для создания экземпляра модели. Мои две догадки
Есть модуль с другим, недопустимым имя класса здесь, которое не позволяет Magento создавать экземпляр объекта.
В вашей системе отсутствует файл класса
Mage_Core_Model_Url_Rewrite_Request
(вapp/code/core/Mage/Core/Model/Url/Rewrite/Request.php
), который является новым в Magento 1.8
У меня была та же проблема, и, помимо очистки кэша, мне пришлось установить права доступа к папкам в /var и подкаталогах на 777 (не волнуйтесь, файл .htaccess в /var не позволяет всему быть "читаемым человеком").
Если у вас есть сервер кэша, такой как memcached, попробуйте также перезапустить его. У меня была та же проблема, и я решил ее таким образом.
Очистить кэш redis;
Повторный интерфейс командной строки
FLUSHALL
Его решенная проблема.
Я попытался следовать объяснению @Alanstorm, но в конечном итоге обнаружил, что это проблема с кэшированием. Мне просто нужно было rm -rf *
все файлы в ~/public_html/var/cache
, и я обнаружил, что сайт загружен правильно.
У меня та же проблема
Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php on line 165
Удаление всего в /var/кэше решает проблему
Удаление всего в var/кэше также решило проблему для меня.
Также пришлось удалить обслуживание.файл флага до возникновения этой проблемы, так как присутствовала страница обслуживания.