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?
ce-1.7.0.2
upgrade
ce-1.8.0.0
Miguel
fuente
fuente
Respuestas:
Mirando la línea 165
El método
_getRequestRewriteController
debe 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
Mage mira el
global/request_rewrite/model
nodo de configuración para encontrar un alias de clase. En un sistema de tienda esto debería serQue Magento luego usa para crear una instancia de un modelo. Mis dos conjeturas son
Aquí hay un módulo con un nombre de clase diferente e inválido, que evita que Magento cree instancias del objeto.
A su sistema le falta el
Mage_Core_Model_Url_Rewrite_Request
archivo de clase (atapp/code/core/Mage/Core/Model/Url/Rewrite/Request.php
), que es nuevo en Magento 1.8fuente
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").
fuente
var
carpeta, lo que significa que Magneto puede volver a una carpeta var del sistema que tiene una configuración en caché antigua.Si tiene un servidor de caché como memcached, intente reiniciarlo también. Tuve el mismo problema y lo resolví de esta manera.
fuente
redis-cli flushall
Borrar redis cache;
Su problema resuelto.
fuente
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/cache
y descubrí que el sitio se cargaba correctamente.fuente
Tengo el mismo problema
Eliminar todo en / var / cache resuelve el problema
fuente
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.
fuente