Erreur fatale: appel à une fonction membre rewrite () sur un non-objet après la mise à niveau


12

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?


J'ai également mis à niveau vers 1.8 magento Mine a le même problème mais l'erreur que je reçois n'est pas dans le varien ... voir l'erreur comme ci-dessous:> Erreur fatale: appel à une fonction membre getProductAttribute () sur un> non-objet dans > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> en ligne 50 plz aidez-moi pour le code car je ne suis pas le développeur ...

Êtes-vous sûr que la compilation est désactivée?
brentwpeterson

@MichaelvanEijden Avez-vous pu retrouver la cause première de cela?
Alan Storm

1
@AlanStorm Pour une raison quelconque, il n'y avait qu'une partie des fichiers transférés pendant la mise à niveau. Votre réponse m'a cependant amené au bon endroit. Merci!
Michael

J'ai le même problème ..... mais j'ai maintenant essayé d'écraser tous les fichiers avec le contenu de l'archive d'installation de magento ZIP .... mais cela n'a pas aidé. Ça va devenir une longue session de débogage! AUCUNE mise à jour de Magento jusqu'à présent n'a fonctionné pour moi sans problème!
cljk

Réponses:


5

En regardant la ligne 165

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

La méthode _getRequestRewriteControllerdoit 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

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

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

Mage examine le global/request_rewrite/modelnœud de configuration pour trouver un alias de classe. Dans un système de magasin, cela devrait être

core/url_rewrite_request

Quel Magento utilise ensuite pour instancier un modèle. Mes deux suppositions sont

  1. Il y a un module avec un nom de classe différent et non valide ici, qui empêche Magento d'instancier l'objet.

  2. Votre système ne contient pas le Mage_Core_Model_Url_Rewrite_Requestfichier de classe (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), qui est nouveau dans Magento 1.8


1
Voir également la réponse / les commentaires de @navotjer ci-dessous.
Alan Storm

7

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).


1
Examinez cela aujourd'hui et appuyez cette réponse - le fait de décompresser une nouvelle base de code Magento peut modifier les autorisations sur votre vardossier, ce qui signifie que Magneto peut revenir à un dossier var système qui a une ancienne configuration mise en cache.
Alan Storm

+1 Vous avez sauvé ma journée! Mise à niveau du 1.6.0.1 vers le 1.9.0.1
toesslab

2

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.


Ou si Redis:redis-cli flushall
kiatng

2

Vider le cache de redis;

redis-cli

FLUSHALL

Son problème résolu.


2

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/cacheet j'ai trouvé que le site se chargeait correctement.


Simple comme ça. J'ai eu le même problème lors de la mise à niveau de 1.7 vers 1.9, mais j'ai oublié d'effacer le dossier de cache.
Ricardo Martins

1

J'ai le même problème

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

La suppression de tout dans / var / cache résout le problème


0

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.