blog webempresa

Soluciona el problema de pantalla en blanco después de actualizar a Joomla 3.2 – Fatal error: Call to a member function get() in remember.php

por | Dic 1, 2013 | Aprender Joomla!

Call to a member function get on a non-objectMuchos usuarios han afrontado la actualización a Joomla 3.2 STS desde versiones como Joomla 3.1.1 para mejorar las prestaciones que esta nueva rama ofrece al CMS, de las que ya hemos dado buena cuenta en otros artículos de este Blog [1], [2], para dar un paso más al frente y posicionarse en la rama 3.x camino de la LTS 3.5 en Mayo de 2014 previsiblemente ¿si el equipo de desarrollo de Joomla cumple con el calendario!.

La sorpresa de muchos usuarios que han llevado a cabo esta actualización ha sido el encontrarse con una pantalla en blanco, tras actualizar, y un error Fatal error: Call to a member function get() on a non-object in /ruta_sitio_web/plugins/system/remember/remember.php on line 94 que poco más o menos les ha dejado inoperativos y un poco preocupados.

No alarmarse porque este problema tiene una solución, sencilla y fácil de llevar a cabo en pocos minutos para recuperar el control de la web y ¡permanecer en Joomla 3.2 sin necesidad de realizar un downgrade a Joomla 3.1.1 de nuevo!.

Este tutorial está desfasado y ya no debería utilizarse. La versión actual de Joomla no se ve afectada por este problema.

El problema:

Nos encontramos en una instalación de Joomla 3.1.1 y el backend nos indica que disponemos de una actualización a Joomla 3.2 versión estable. Procedemos a realizar una copia de seguridad (siempre) y despues desde Componentes, Actualización de Joomla realizamos la actualización.

Tras realizar este sencillo paso el sistema nos indica lo siguiente:

Su sitio ha sido actualizado correctamente. Ahora su versión de Joomla es la 3.2.0.

Al tratar de cargar el frontend, tras la actualización, la pantalla se muestra en blanco, lo que indica que existe un error de php aunque no se muestre información.

El problema viene originado por un pequeño bug en el archivo remember.php de la versión 3.2 de Joomla que provoca una pantalla en blanco (una pantalla en blanco suele ser sinónimo de un error de php), mostrando el citado mensaje:

Fatal error: Call to a member function get() on a non-object in /ruta_sitio_web/plugins/system/remember/remember.php on line 94

Si no vemos este mensaje es posible que tengamos configurada la variable “$error_reporting= ‘default'” (Informe de errores) en “Defecto” o “Predeterminado del sistema” y por este motivo no veamos dicho error en pantalla.

Podemos modificar este valor para visualizar el error de la siguiente forma:

  1. Acceder al panel de Hosting (WePanel), Administrador de Archivos (también válido por FTP).
  2. Navegar a la carpeta /public_html/ o donde tengamos la web afectada.
  3. Localizar y editar el archivo configuration.php
  4. Modificar el valor de la variable $error_reporting= ‘default’ a ‘Maximun‘.
  5. Guardar los cambios.
  6. Recargar la página y verificar si ahora se muestra el error.

El proceso explicado en capturas pasa por la localización y edición del archivo configuration.php:



Modificar la variable $error_reporting pasándola de ‘default’ a ‘Maximun’:



Recargamos la página y deberíamos visualizar ya el error provocado por la actualización desde Joomla.

La solución:

Si bien siempre se recomienda realizar una copia de seguridad por alguno de los métodos habitualmente explicados [1], [2], [3] la solución para recuperar el control del sitio web y mantenerse en la versión actualizada de Joomla 3.2 es sencilla.

  1. Acceder al panel de Hosting (WePanel), Administrador de Archivos (también válido por FTP).
  2. Navegar a la carpeta /plugins/system/
  3. Localizar el archivo remember.php y renombrarlo, por ejemplo: remember.php_old (no eliminarlo).
  4. Descargar un Pack de Joomla 3.1.5 oficial.
  5. Extraer el archivo .zip descargado.
  6. Localizar el fichero remember.php en /plugins/system/
  7. Desde el Administrador de Archivos (WePanel) subir el archivo remember.php a la carpeta /plugins/system/ (también válido por FTP).
  8. Acceder al backend de la web http://www.tu_sitio.com/administrator
  9. Ir al Gestor de Extensiones, Base de Datos.
  10. Hacer clic en “Corregir”
  11. Desde el Administrador de Archivos (WePanel) ir a la carpeta /plugins/system/ (también válido por FTP).
  12. Eliminar el archivo remember.php recién subido.
  13. Renombrar el archivo remember.php_old a remember.php
  14. Revisar que todo funciona con normalidad.

Hay que tener en cuenta que las actualizaciones del core de Joomla NO actualizan la base de datos, por lo que este proceso último (corregir la Base de datos) hay que hacerlo manualmente tal como se ha explicado.

Si no realizamos esta última parte del proceso podríamos encontrarnos con errores como:

1146 Table ‘xxxxxxxx_content_types’ doesn’t exist SQL=SHOW COLUMNS IN `xxxx_content_types` WHERE field = ‘content_history_options’

De esta forma recuperamos el control de nuestro sitio web tras la actualización sin que esto afecte a los archivos de la base de datos ni al resto de la web.

Puedes encontrar los detalles del bug reportado en la forja de JoomlaCode.org si quieres estar más documentado.


¿Te ha resultado útil este artículo?

Promo hosting noviembre