Неустранимая ошибка: Вызов функции-члена 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

Как мы можем устранить эту ошибку?

Author: brentwpeterson, 2013-09-27

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 затем использует для создания экземпляра модели. Мои две догадки

  1. Есть модуль с другим, недопустимым имя класса здесь, которое не позволяет Magento создавать экземпляр объекта.

  2. В вашей системе отсутствует файл класса Mage_Core_Model_Url_Rewrite_Requestapp/code/core/Mage/Core/Model/Url/Rewrite/Request.php), который является новым в Magento 1.8

 5
Author: Alan Storm, 2013-09-27 17:58:15

У меня была та же проблема, и, помимо очистки кэша, мне пришлось установить права доступа к папкам в /var и подкаталогах на 777 (не волнуйтесь, файл .htaccess в /var не позволяет всему быть "читаемым человеком").

 7
Author: navotjer, 2018-06-19 06:50:24

Если у вас есть сервер кэша, такой как memcached, попробуйте также перезапустить его. У меня была та же проблема, и я решил ее таким образом.

 2
Author: cavbleu, 2013-09-28 14:27:26

Очистить кэш redis;

Повторный интерфейс командной строки

FLUSHALL

Его решенная проблема.

 2
Author: Knase, 2015-03-04 14:47:29

Я попытался следовать объяснению @Alanstorm, но в конечном итоге обнаружил, что это проблема с кэшированием. Мне просто нужно было rm -rf * все файлы в ~/public_html/var/cache, и я обнаружил, что сайт загружен правильно.

 2
Author: user3604, 2018-06-19 07:07:39

У меня та же проблема

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/кэше решает проблему

 1
Author: Krysis, 2013-10-18 13:14:05

Удаление всего в var/кэше также решило проблему для меня.

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

 0
Author: kelly, 2014-01-24 23:22:25