Error grave: llamada a una función miembro rewrite () en un objeto que no es objeto después de la actualización

12

Intentamos actualizar nuestra instalación de Magento de 1.7.0.2 a 1.8.0.0. Ahora tenemos el siguiente error en todas las páginas:

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

Intentamos borrar todos los cachés, deshabilitar y volver a compilar el compilador y reindexar el indexador. Hoy temprano todo salió bien en nuestra instalación local. Esta es la misma instalación, excepto algunos pedidos y datos del cliente.

Cuando el compilador está habilitado, el error cambia en:

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

¿Cómo podemos depurar este error?

Miguel
fuente
Yo también actualicé a 1.8 magento Mine tiene el mismo problema, pero el error que recibo no está en la varien ... vea el error a continuación:> Error fatal: Llame a una función miembro getProductAttribute () en un> no objeto en > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> en línea 50 por favor, ayúdenme para el código, ya que no soy el desarrollador ...
¿Estás seguro de que tienes la compilación desactivada?
brentwpeterson
@MichaelvanEijden ¿Pudiste rastrear la causa raíz de esto?
Alan Storm
1
@AlanStorm Por alguna razón, solo se transfirió una parte de los archivos durante la actualización. Sin embargo, su respuesta me llevó al lugar correcto. ¡Gracias!
Michael
Tengo el mismo problema ..... pero ahora intenté sobrescribir todos los archivos con el contenido del archivo de instalación de magento ZIP ... pero no me ayudó. ¡Eso se convertirá en una muuucha sesión de depuración! ¡Ninguna actualización de Magento hasta ahora funcionó para mí sin problemas!
cljk

Respuestas:

5

Mirando la línea 165

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

El método _getRequestRewriteControllerdebe devolver un objeto. Por alguna razón, no está devolviendo un objeto en su sistema.

Echando un vistazo a esa definición de método, vemos lo siguiente

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

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

Mage mira el global/request_rewrite/modelnodo de configuración para encontrar un alias de clase. En un sistema de tienda esto debería ser

core/url_rewrite_request

Que Magento luego usa para crear una instancia de un modelo. Mis dos conjeturas son

  1. Aquí hay un módulo con un nombre de clase diferente e inválido, que evita que Magento cree instancias del objeto.

  2. A su sistema le falta el Mage_Core_Model_Url_Rewrite_Requestarchivo de clase (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), que es nuevo en Magento 1.8

Alan Storm
fuente
1
Además, vea la respuesta / comentarios de @navotjer a continuación.
Alan Storm
7

Tuve el mismo problema y, además de borrar la memoria caché, tuve que configurar los permisos de carpeta en / var y los subdirectorios en 777 (no se preocupe, el archivo .htaccess en / var evita que todo sea legible para "humanos").

navotjer
fuente
1
Me encontré con esto hoy y secundé esta respuesta: quitar una nueva base de código de Magento puede cambiar los permisos en su varcarpeta, lo que significa que Magneto puede volver a una carpeta var del sistema que tiene una configuración en caché antigua.
Alan Storm
+1 ¡Me salvaste el día! Estaba actualizando de 1.6.0.1 a 1.9.0.1
toesslab
2

Si tiene un servidor de caché como memcached, intente reiniciarlo también. Tuve el mismo problema y lo resolví de esta manera.

Cavbleu
fuente
O si Redis:redis-cli flushall
kiatng
2

Borrar redis cache;

redis-cli

FLUSHALL

Su problema resuelto.

Knase
fuente
2

Traté de seguir la explicación de @AlanStorm, pero finalmente encontré que era un problema de almacenamiento en caché. Solo tenía que ingresar rm -rf *todos los archivos ~/public_html/var/cachey descubrí que el sitio se cargaba correctamente.

usuario3604
fuente
Simple como este. Tuve el mismo problema al actualizar de 1.7 a 1.9, pero olvidé borrar la carpeta de caché.
Ricardo Martins
1

Tengo el mismo 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

Eliminar todo en / var / cache resuelve el problema

Krysis
fuente
0

Eliminar todo en var / cache también resolvió el problema para mí.

También tuve que eliminar el archivo maintenance.flag antes de que ocurriera este problema, ya que había una página de mantenimiento.

kelly
fuente