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?
ce-1.7.0.2
upgrade
ce-1.8.0.0
Michał
źródło
źródło
Odpowiedzi:
Patrząc na linię 165
Metoda
_getRequestRewriteController
powinna zwrócić obiekt. Z jakiegoś powodu nie zwraca obiektu w twoim systemie.Patrząc na definicję tej metody, widzimy następujące
Mag patrzy na
global/request_rewrite/model
węzeł konfiguracji, by znaleźć alias klasy. W systemie sklepowym tak powinno byćKtóre Magento następnie używa do tworzenia modelu. Moje dwa domysły są
Jest tu moduł z inną, niepoprawną nazwą klasy, co uniemożliwia Magento utworzenie instancji obiektu.
W twoim systemie brakuje
Mage_Core_Model_Url_Rewrite_Request
pliku klasy (atapp/code/core/Mage/Core/Model/Url/Rewrite/Request.php
), który jest nowy w Magento 1.8źródło
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).
źródło
var
folderu, co oznacza, że Magneto może powrócić do systemowego folderu var, który ma starą buforowaną konfigurację.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.
źródło
redis-cli flushall
Wyczyść pamięć podręczną redis;
To rozwiązany problem.
źródło
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/cache
i okazało się, że strona załadowana poprawnie.źródło
Mam ten sam problem
Usunięcie całości w / var / cache rozwiązuje problem
źródło
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.
źródło