Fatal error: Cannot redeclare pSQL() y Class ‘ObjectModel’ not found [SOLUCIONADOS]

por | Ago 26, 2015 | Prestashop

¿Te acabas de quedar con pantallazo blanco y no te funciona ni front ni backoffice de tu Prestashop? Tranquilo, aquí te explico la solución, sencilla y rápida 🙂

Es posible que estés tranquilamente, en tu Prestashop, modificando parámetros de configuración de rendimiento de la caché (concretamente el forzar compilación de la plantilla) y, cuando guardes los cambios, te aparezca una pantalla en blanco, tanto en la tienda online como en el gestor, y te quedes con cara de «Adiós, ¿qué ha pasado? me he quedado sin tienda!!»

Y, sí, efectivamente, no podrás acceder a ella vía web de ningún modo, y desde la base de datos, verás que tampoco puedes hacer nada que la resucite.

Pues bien, es un tema de la caché. Hombreeee! ¿Otra vez un Prestashop falla por culpa de la caché? ¿Cuándo ha pasado eso antes? (nótese la ironía, dosis ingentes de ella, por cierto).

El error habitual suele tener un aspecto como el que sigue:

Fatal error: Cannot redeclare pSQL() (previously declared in /../config/alias.php:64) in /../classes/Db.php on line 320

Si no ves el error, es porque no tienes el modo DEV activado, para ello, y a través de tu programa habitual de transferencia de archivos (por ejemplo Filezilla), edita el fichero config/settings.inc.php y alrededor de la línea 29, encontrarás la instrucción define(‘_PS_MODE_DEV_’, false);

Simplemente cambia false por true y guarda cambios Captura de pantalla 2015-08-27 a las 11.11.01

Si vuelves a tu prestashop (backoffice o frontoffice) y refrescas la pantalla, ya te aparecerá el error que he indicado antes.

 

 

SOLUCIÓN

Éste error suele generarse al haber realizado un autoupgrade de Prestashop en el que algo ha salido mal (aunque no nos haya aparecido ningún error visible durante el proceso de actualización), ya que, de por sí, el fichero con el error en cuestión, el Db.php, no contiene ninguna instrucción pSQL() en la línea en la que aparece el fallo.

Hay dos soluciones, tan simples como rápidas ambas:

  • Solución 1: sitúate en el fichero /classes/Db.php y bórralo o cámbiale de nombre (no sin antes haber hecho copia de seguridad)
  • Solución 2: consigue una versión actualizada de dicho fichero descargándotela directamente de una versión más nueva de Prestashop

Refresca la pantalla de backoffice y la de frontoffice y verás que has recuperado la tienda.

Si este error te ha aparecido por alguna modificación de los parámetros de la caché, te recomiendo que vuelvas a «Parámetros avanzados -> Rendimiento» y los restablezcas a los valores que tenías antes del error. Es muy posible que, si haces esto, te aparezca otro error:

Fatal error: Class ‘ObjectModel’ not found in classes/shop/Shop.php

Fatal error: Class ‘ObjectModel’ not found in classes/shop/Shop.php

Pues bien, de nuevo tendrás la pantalla blanca y la tienda inaccesible desde web. Y como de borrar va hoy el tema, la solución será lo mismo, a saber:

Sitúate en el fichero /Cache/class_index.php y bórralo, sin manías, ya que se regenerará automáticamente pero sin error esta vez.

Et voilà, hemos solucionado dos errores de caché de un plumazo.

Cuando te hayas asegurado de que has restablecido los parámetros de la caché y que todo funciona, te recomiendo que, la copia de Db.php que habías hecho antes de borrar el fichero, la subas a la carpeta de la que ser borró /classes/Db.php

Espero haberos podido ayudar. Si tenéis alguna aportación, adelante, estamos para ayudarnos 🙂

 

Rating: 5.0/5. From 1 vote.
Please wait...
Resumen
Fatal error: Cannot redeclare pSQL()  y Class ‘ObjectModel’ not found [SOLUCIONADOS]
Nombre del artículo
Fatal error: Cannot redeclare pSQL() y Class ‘ObjectModel’ not found [SOLUCIONADOS]
Descripción
¿Te acabas de quedar con pantallazo blanco y no te funciona ni front ni backoffice de tu Prestashop? Tranquilo, te explico la solución, sencilla y rápida 🙂
Autor

Centro de preferencias de privacidad

Necesarias

Se usan para saber si ya aceptaste nuestras políticas, si ya estás suscrito a nuestra newsletter, para reconocer el estado de tu sesión si la tuvieses y para servir más rápidos los contenidos.

No se captura IPs ni siquiera para el servicio de Analytics así que tu visita es privada.

JSESSIONID, _cfuid, wpSGCachePypass, mailerlite, gdpr, gawp

Translate »