Фатальна помилка: виклик перезаписати функцію-члена () на не-об'єкт після оновлення


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> на лінії 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 перешкоджає читати все, що "людське").


1
Сьогодні зайнявся цим питанням і надіславши цю відповідь - вилучення нової кодової бази Magento може змінити дозволи вашої varпапки, а це означає, що Magneto може повернутися до папки системного var зі старою кешованою конфігурацією.
Алан Шторм

+1 Ти врятував мені день! Оновлено з 1.6.0.1 до 1.9.0.1
toesslab

2

Якщо у вас є кеш-сервер, як memcached, спробуйте перезапустити його також. У мене було те саме питання, і я вирішив таким чином.


Або якщо Redis:redis-cli flushall
kiatng


2

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


Простий, як це. У мене була та сама проблема, коли було оновлено з 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 вирішує проблему


0

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

Також доводилося видалити файл vzdrže.flag до виникнення цієї проблеми, оскільки на ньому була сторінка технічного обслуговування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.