Errore irreversibile: chiamata a una funzione membro rewrite () su un non oggetto dopo l'aggiornamento


12

Abbiamo provato ad aggiornare la nostra installazione di Magento dalla 1.7.0.2 alla 1.8.0.0. Ora abbiamo il seguente errore su tutte le pagine:

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

Abbiamo provato a cancellare tutte le cache, disabilitare e ricompilare il compilatore e reindicizzare l'indicizzatore. Ancora oggi tutto è andato bene nella nostra installazione locale. Questa è la stessa installazione tranne alcuni ordini e dati del cliente.

Quando il compilatore è abilitato, l'errore si trasforma 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

Come possiamo eseguire il debug di questo errore?


Anche io ho aggiornato a magento 1.8 Il mio ha lo stesso problema ma l'errore che sto ottenendo non è nella varietà ... vedi l'errore come sotto:> Errore fatale: chiamata a una funzione membro getProductAttribute () su un> non oggetto in > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> on line 50 per favore aiutami per il codice in quanto non sono lo sviluppatore ...

Sei sicuro di aver disattivato la compilation?
brentwpeterson,

@MichaelvanEijden Sei stato in grado di rintracciare la causa principale di questo?
Alan Storm,

1
@AlanStorm Per qualche motivo, c'era solo una parte dei file trasferiti durante l'aggiornamento. La tua risposta mi ha portato nel posto giusto però. Grazie!
Michael,

Ho lo stesso problema ..... ma ora ho provato a sovrascrivere tutti i file con il contenuto dell'archivio di installazione ZIP di magento .... ma non ha aiutato. Diventerà una lunga sessione di debug! Nessun aggiornamento di Magento finora ha funzionato per me senza problemi!
cljk

Risposte:


5

Guardando la linea 165

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

Il metodo _getRequestRewriteControllerdovrebbe restituire un oggetto. Per qualche motivo, non sta restituendo un oggetto nel tuo sistema.

Dando un'occhiata a quella definizione del metodo, vediamo quanto segue

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

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

Mage guarda il global/request_rewrite/modelnodo di configurazione per trovare un alias di classe. In un sistema di negozi questo dovrebbe essere

core/url_rewrite_request

Che Magento usa quindi per creare un'istanza di un modello. Le mie due ipotesi lo sono

  1. C'è un modulo con un nome di classe diverso, non valido qui, che impedisce a Magento di creare un'istanza dell'oggetto.

  2. Nel tuo sistema manca il Mage_Core_Model_Url_Rewrite_Requestfile di classe (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), che è nuovo in Magento 1.8


1
Inoltre, vedi la risposta / commenti da @navotjer di seguito.
Alan Storm,

7

Ho avuto lo stesso problema e, oltre a svuotare la cache, ho dovuto impostare i permessi delle cartelle su / var e le sottodirectory su 777 (non preoccuparti, il file .htaccess in / var impedisce che tutto sia "umano" leggibile).


1
Ci siamo imbattuti in questo oggi e nel distaccare questa risposta: l'annullamento dell'aggiornamento di una nuova base di codice Magento può modificare le autorizzazioni sulla varcartella, il che significa che Magneto potrebbe tornare a una cartella var di sistema con una vecchia configurazione memorizzata nella cache.
Alan Storm,

+1 Mi hai salvato la giornata! Aggiornamento da 1.6.0.1 a 1.9.0.1
toesslab

2

Se hai un server cache come memcached, prova anche a riavviarlo. Ho avuto lo stesso problema e ho risolto in questo modo.


O se Redis:redis-cli flushall
kiatng

2

Cancella cache redis;

Redis-cli

FLUSHALL

Il suo problema risolto.


2

Ho provato a seguire la spiegazione di @AlanStorm, ma alla fine ho scoperto che si trattava di un problema di memorizzazione nella cache. Ho dovuto inserire rm -rf *tutti i file ~/public_html/var/cachee ho scoperto che il sito è stato caricato correttamente.


Semplice come questo Ho avuto lo stesso problema durante l'aggiornamento da 1.7 a 1.9, ma ho dimenticato di cancellare la cartella della cache.
Ricardo Martins,

1

Ho lo stesso problema

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

L'eliminazione di tutto in / var / cache risolve il problema


0

L'eliminazione di tutto in var / cache ha risolto il problema anche per me.

Inoltre, è stato necessario eliminare il file maintenance.flag prima che si verificasse questo problema, poiché era presente una pagina di manutenzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.