Неустранимая ошибка: вызов функции-члена rewrite () для необъекта после обновления

12

Мы попытались обновить нашу установку 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

Как мы можем отладить эту ошибку?

Майкл
источник
Я тоже обновился до версии 1.8 magento. У меня возникла та же проблема, но ошибка, которую я получаю, не в разнице ... см. Ошибку, как показано ниже:> Неустранимая ошибка: вызов функции-члена getProductAttribute () для> необъекта в > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> on line 50 plz, помогите мне с кодом, поскольку я не разработчик ...
Вы уверены, что у вас отключена компиляция?
Brentwpeterson
@MichaelvanEijden Удалось ли вам найти причину этого?
Алан Шторм
1
@AlanStorm По какой-то причине во время обновления была передана только часть файлов. Ваш ответ привел меня в нужное место, хотя. Благодарность!
Майкл
У меня та же проблема ..... но теперь я попытался перезаписать все файлы содержимым установочного архива magento ZIP .... но это не помогло. Это станет долгой отладочной сессией! Никакое обновление Magento до сих пор не работало для меня без проблем!
cljk

Ответы:

5

Глядя на строку 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_Requestфайл класса (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), который появился в Magento 1.8

Алан Сторм
источник
1
Также смотрите ответ / комментарии от @navotjer ниже.
Алан Шторм
7

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

navotjer
источник
1
Натолкнулся на это сегодня и поддержал этот ответ - снятие новой базы кода Magento может изменить разрешения для вашей varпапки, что означает, что Magneto может вернуться к папке системного var, которая имеет старую кэшированную конфигурацию.
Алан Шторм
+1 Ты спас мой день! Обновлялся с 1.6.0.1 до 1.9.0.1
toesslab
2

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

cavbleu
источник
Или если Redis:redis-cli flushall
kiatng
2

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

Redis-кли

FLUSHALL

Это решенная проблема.

Knase
источник
2

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

user3604
источник
Просто так. У меня была такая же проблема при обновлении с 1.7 до 1.9, но я забыл очистить папку кеша.
Рикардо Мартинс
1

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

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

Krysis
источник
0

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

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

келли
источник