Schwerwiegender Fehler: Rufen Sie nach dem Upgrade eine Mitgliedsfunktion rewrite () für ein Nicht-Objekt auf

12

Wir haben versucht, unsere Magento-Installation von 1.7.0.2 auf 1.8.0.0 zu aktualisieren. Jetzt haben wir auf allen Seiten den folgenden Fehler:

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

Wir haben versucht, alle Caches zu löschen, den Compiler zu deaktivieren und neu zu kompilieren und den Indexer neu zu indizieren. Früher ging heute alles gut auf unserer lokalen Installation. Dies ist die gleiche Installation mit Ausnahme einiger Bestellungen und Kundendaten.

Wenn der Compiler aktiviert ist, ändert sich der Fehler in:

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

Wie können wir diesen Fehler beheben?

Michael
quelle
Ich habe auch auf 1.8 Magento Mine aktualisiert. Meins hat ein ähnliches Problem, aber der Fehler, den ich erhalte, liegt nicht in der Varie ... siehe den folgenden Fehler:> Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion getProductAttribute () für ein> Nicht-Objekt in > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> on line 50 plz hilf mir für den Code, da ich nicht der Entwickler bin ...
Sind Sie sicher, dass die Kompilierung deaktiviert ist?
Brentwpeterson
@MichaelvanEijden Konnten Sie die Ursache dafür ermitteln?
Alan Storm
1
@AlanStorm Aus irgendeinem Grund wurde nur ein Teil der Dateien während des Upgrades übertragen. Ihre Antwort brachte mich jedoch an den richtigen Ort. Vielen Dank!
Michael
Ich habe das gleiche Problem ... aber ich habe jetzt versucht, alle Dateien mit dem Inhalt des Magento ZIP-Installationsarchivs zu überschreiben ... aber es hat nicht geholfen. Das wird eine lange Debugsession! KEIN Update von Magento hat bisher bei mir problemlos geklappt!
Cljk

Antworten:

5

Betrachte Zeile 165

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

Die Methode _getRequestRewriteControllersollte ein Objekt zurückgeben. Aus irgendeinem Grund wird kein Objekt in Ihrem System zurückgegeben.

Wenn wir uns diese Methodendefinition ansehen, sehen wir Folgendes

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

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

Mage untersucht den global/request_rewrite/modelKonfigurationsknoten, um einen Klassenalias zu finden. In einem Store-System sollte dies sein

core/url_rewrite_request

Welches Magento dann verwendet, um ein Modell zu instanziieren. Meine zwei Vermutungen sind

  1. Es gibt hier ein Modul mit einem anderen, ungültigen Klassennamen, der verhindert, dass Magento das Objekt instanziiert.

  2. In Ihrem System fehlt die Mage_Core_Model_Url_Rewrite_RequestKlassendatei (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), die in Magento 1.8 neu ist

Alan Storm
quelle
1
Siehe auch die Antwort / Kommentare von @navotjer unten.
Alan Storm
7

Ich hatte das gleiche Problem und neben dem Leeren des Cache musste ich die Ordnerberechtigungen für / var und Unterverzeichnisse auf 777 setzen (keine Sorge, die .htaccess-Datei in / var verhindert, dass alles "menschlich" lesbar ist).

navotjer
quelle
1
Heute darauf gestoßen und diese Antwort unterstützt - das Deaktivieren einer neuen Magento-Codebasis kann die Berechtigungen für Ihren varOrdner ändern , was bedeutet, dass Magneto möglicherweise auf einen System-Var-Ordner zurückgreift, der eine alte zwischengespeicherte Konfiguration aufweist.
Alan Storm
+1 Du hast meinen Tag gerettet! Upgrade von 1.6.0.1 auf 1.9.0.1
toesslab
2

Wenn Sie einen Cache-Server wie memcached haben, versuchen Sie, ihn ebenfalls neu zu starten. Ich hatte das gleiche Problem und habe es so gelöst.

cavbleu
quelle
Oder wenn Redis:redis-cli flushall
Kiatng
2

Cache löschen;

redis-cli

FLUSHALL

Sein gelöstes Problem.

Knase
quelle
2

Ich habe versucht, der Erklärung von @AlanStorm zu folgen, fand aber letztendlich, dass es sich um ein Caching-Problem handelte. Ich musste einfach rm -rf *alle Dateien rein ~/public_html/var/cacheund fand, dass die Seite korrekt geladen wurde.

user3604
quelle
So einfach. Ich hatte das gleiche Problem beim Upgrade von 1.7 auf 1.9, vergaß aber, den Cache-Ordner zu löschen.
Ricardo Martins
1

Ich habe das gleiche 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

Das Löschen aller Dateien in / var / cache löst das Problem

Krysis
quelle
0

Das Löschen von allem in var / cache löste das Problem auch für mich.

Außerdem musste die Datei maintenance.flag gelöscht werden, bevor dieses Problem auftrat, da eine Wartungsseite vorhanden war.

Kelly
quelle