Nous avons essayé de mettre à niveau notre installation Magento de 1.7.0.2 à 1.8.0.0. Maintenant, nous avons eu l'erreur suivante sur toutes les pages:
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
Nous avons essayé d'effacer tous les caches, de désactiver et de recompiler le compilateur et de réindexer l'indexeur. Plus tôt dans la journée, tout s'est bien passé sur notre installation locale. Il s'agit de la même installation à l'exception de certaines commandes et données client.
Lorsque le compilateur est activé, l'erreur change dans:
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
Comment pouvons-nous déboguer cette erreur?
ce-1.7.0.2
upgrade
ce-1.8.0.0
Michael
la source
la source
Réponses:
En regardant la ligne 165
La méthode
_getRequestRewriteController
doit renvoyer un objet. Pour une raison quelconque, il ne renvoie pas d'objet dans votre système.En regardant cette définition de méthode, nous voyons ce qui suit
Mage examine le
global/request_rewrite/model
nœud de configuration pour trouver un alias de classe. Dans un système de magasin, cela devrait êtreQuel Magento utilise ensuite pour instancier un modèle. Mes deux suppositions sont
Il y a un module avec un nom de classe différent et non valide ici, qui empêche Magento d'instancier l'objet.
Votre système ne contient pas le
Mage_Core_Model_Url_Rewrite_Request
fichier de classe (atapp/code/core/Mage/Core/Model/Url/Rewrite/Request.php
), qui est nouveau dans Magento 1.8la source
J'ai eu le même problème, et en plus de vider le cache, j'ai dû définir les autorisations de dossier sur / var et les sous-répertoires sur 777 (ne vous inquiétez pas, le fichier .htaccess dans / var empêche tout d'être "humain" lisible).
la source
var
dossier, ce qui signifie que Magneto peut revenir à un dossier var système qui a une ancienne configuration mise en cache.Si vous avez un serveur de cache comme memcached, essayez de le redémarrer également. J'ai eu le même problème et j'ai résolu de cette façon.
la source
redis-cli flushall
Vider le cache de redis;
Son problème résolu.
la source
J'ai essayé de suivre l'explication de @AlanStorm, mais j'ai finalement trouvé que c'était un problème de mise en cache. J'ai juste eu à
rm -rf *
tous les fichiers~/public_html/var/cache
et j'ai trouvé que le site se chargeait correctement.la source
J'ai le même problème
La suppression de tout dans / var / cache résout le problème
la source
Tout supprimer dans var / cache a également résolu le problème.
J'ai également dû supprimer le fichier maintenance.flag avant que ce problème ne se produise, car une page de maintenance était présente.
la source