Мы попытались обновить нашу установку 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
Как мы можем отладить эту ошибку?
ce-1.7.0.2
upgrade
ce-1.8.0.0
Майкл
источник
источник
Ответы:
Глядя на строку 165
Метод
_getRequestRewriteController
должен вернуть объект. По какой-то причине он не возвращает объект в вашей системе.Взглянув на определение этого метода, мы видим следующее
Маг смотрит на
global/request_rewrite/model
узел конфигурации, чтобы найти псевдоним класса. В системе магазина это должно бытьКакой Magento затем использует для создания экземпляра модели. Мои две догадки
Здесь есть модуль с другим недопустимым именем класса, который не позволяет Magento создавать объект.
В вашей системе отсутствует
Mage_Core_Model_Url_Rewrite_Request
файл класса (atapp/code/core/Mage/Core/Model/Url/Rewrite/Request.php
), который появился в Magento 1.8источник
У меня была та же проблема, и помимо очистки кеша, мне пришлось установить права доступа к папкам для / var и подкаталогов на 777 (не волнуйтесь, файл .htaccess в / var не позволяет всему быть «читаемым человеком»).
источник
var
папки, что означает, что Magneto может вернуться к папке системного var, которая имеет старую кэшированную конфигурацию.Если у вас есть кеш-сервер, такой как memcached, попробуйте перезапустить его. У меня была такая же проблема, и я решил ее таким образом.
источник
redis-cli flushall
Очистить кэш Redis;
Это решенная проблема.
источник
Я попытался следовать объяснениям @AlanStorm, но в итоге обнаружил, что это проблема с кэшированием. Мне просто нужно было
rm -rf *
все файлы,~/public_html/var/cache
и я обнаружил, что сайт загружен правильно.источник
У меня такая же проблема
Удаление всего в / var / cache решает проблему
источник
Удаление всего в var / cache решило проблему и для меня.
Также пришлось удалить файл maintenance.flag, прежде чем возникла эта проблема, так как присутствовала страница обслуживания.
источник