Błąd krytyczny: wywołanie funkcji członka przepisuj () na obiekcie innym niż obiekt po aktualizacji

12

Próbowaliśmy zaktualizować naszą instalację Magento z 1.7.0.2 do 1.8.0.0. Teraz na wszystkich stronach pojawia się następujący błąd:

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

Próbowaliśmy wyczyścić wszystkie pamięci podręczne, wyłączyć i ponownie skompilować kompilator oraz ponownie zindeksować indeksator. Wcześniej dzisiaj wszystko szło dobrze na naszej lokalnej instalacji. Jest to ta sama instalacja, z wyjątkiem niektórych zamówień i danych klienta.

Po włączeniu kompilatora błąd zmienia się w:

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

Jak możemy debugować ten błąd?

Michał
źródło
Ja również zaktualizowałem do wersji 1.8 magento Mine ma ten sam problem, ale błąd, który otrzymuję, nie występuje w varien ... zobacz błąd jak poniżej:> Błąd krytyczny: Wywołanie funkcji członkowskiej getProductAttribute () na obiekcie nie będącym obiektem w > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> on line 50 plz pomóż mi dla kodu, ponieważ nie jestem programistą ...
Czy na pewno masz wyłączoną kompilację?
brentwpeterson
@MichaelvanEijden Czy udało Ci się znaleźć przyczynę tego?
Alan Storm
1
@AlanStorm Z jakiegoś powodu podczas aktualizacji przesłano tylko część plików. Twoja odpowiedź zaprowadziła mnie jednak we właściwe miejsce. Dzięki!
Michael
Mam ten sam problem ..... ale próbowałem teraz zastąpić wszystkie pliki zawartością archiwum instalacyjnego magento ZIP ... ale to nie pomogło. To będzie długa sesja debugowania! Żadna aktualizacja Magento do tej pory nie działała dla mnie bez problemów!
cljk

Odpowiedzi:

5

Patrząc na linię 165

#File: app/code/core/Mage/Core/Controller/Varien/Front.php
$this->_getRequestRewriteController()->rewrite();

Metoda _getRequestRewriteControllerpowinna zwrócić obiekt. Z jakiegoś powodu nie zwraca obiektu w twoim systemie.

Patrząc na definicję tej metody, widzimy następujące

protected function _getRequestRewriteController()
{
    $className = (string)Mage::getConfig()->getNode('global/request_rewrite/model');

    return Mage::getSingleton('core/factory')->getModel($className, array(
        'routers' => $this->getRouters(),
    ));
}

Mag patrzy na global/request_rewrite/modelwęzeł konfiguracji, by znaleźć alias klasy. W systemie sklepowym tak powinno być

core/url_rewrite_request

Które Magento następnie używa do tworzenia modelu. Moje dwa domysły są

  1. Jest tu moduł z inną, niepoprawną nazwą klasy, co uniemożliwia Magento utworzenie instancji obiektu.

  2. W twoim systemie brakuje Mage_Core_Model_Url_Rewrite_Requestpliku klasy (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), który jest nowy w Magento 1.8

Alan Storm
źródło
1
Zobacz także odpowiedź / komentarze od @navotjer poniżej.
Alan Storm,
7

Miałem ten sam problem i oprócz wyczyszczenia pamięci podręcznej musiałem ustawić uprawnienia do folderów w katalogu / var i podkatalogach na 777 (nie martw się, plik .htaccess w katalogu / var uniemożliwia odczytanie wszystkiego przez człowieka).

navotjer
źródło
1
Wpadłem na to dzisiaj i popierałem tę odpowiedź - odznaczenie nowej bazy kodu Magento może zmienić uprawnienia do twojego varfolderu, co oznacza, że ​​Magneto może powrócić do systemowego folderu var, który ma starą buforowaną konfigurację.
Alan Storm,
+1 Uratowałeś mi dzień! Uaktualniałem z 1.6.0.1 do 1.9.0.1
toesslab
2

Jeśli masz serwer pamięci podręcznej, taki jak Memcached, spróbuj go zrestartować. Miałem ten sam problem i rozwiązałem ten sposób.

cavbleu
źródło
Lub jeśli Redis:redis-cli flushall
kat
2

Wyczyść pamięć podręczną redis;

redis-cli

FLUSHALL

To rozwiązany problem.

Knase
źródło
2

Próbowałem postępować zgodnie z wyjaśnieniem @AlanStorm, ale ostatecznie okazało się, że był to problem z pamięcią podręczną. Musiałem tylko do rm -rf *wszystkich plików ~/public_html/var/cachei okazało się, że strona załadowana poprawnie.

użytkownik3604
źródło
Proste jak to. Miałem ten sam problem podczas aktualizacji z wersji 1.7 do 1.9, ale zapomniałem wyczyścić folder pamięci podręcznej.
Ricardo Martins,
1

Mam ten sam problem

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

Usunięcie całości w / var / cache rozwiązuje problem

Krysis
źródło
0

Usunięcie wszystkiego z var / cache również rozwiązało problem.

Musiałem również usunąć plik Maintenance.flag, zanim wystąpił ten problem, ponieważ strona konserwacji była obecna.

Kelly
źródło