Sin impuesto Con impuesto

Subir de PrestaShop 1.7 a 8: los errores que más se repiten

Gustavo lleva desde 2024 actualizando tiendas de 1.7 a PrestaShop 8 y ha ido contando lo que falla. Reunimos su método y los errores que más se repiten: funciones de Tools que ya no existen, OPcache, overrides que chocan, actualizaciones a medias y el correo en 8.2.

Equipo Rekire
Actualizado: 18/03/2025 7
Subir de PrestaShop 1.7 a 8: los errores que más se repiten
Compartir:

Gustavo lleva desde 2024 pasando tiendas de 1.7 a PrestaShop 8 con el módulo oficial de actualización, y ha ido contando en el grupo lo que se rompe. La lista es corta y casi siempre la misma: módulos que usan funciones que ya no existen, OPcache, overrides y ficheros a medio actualizar. Nada grave si sabes dónde mirar.

El camino que sigue Gustavo

En septiembre de 2024 estaba actualizando tiendas a 8.1.7 con PHP 8.1, actualizando también la plantilla y activando la generación de imágenes WebP y AVIF. Su experiencia: la velocidad de carga mejora. Su forma de hacerlo:

  • Las tiendas venían de 1.7.5, 1.7.6 o 1.7.7. Primero las sube a 1.7.8.x y, unos meses después, a 8.1. Con las anteriores a 1.7.5, «complicado».
  • Usa el módulo oficial de actualización, que según él ha mejorado mucho y ya no da errores.
  • Las personalizaciones hechas en el núcleo hay que pasarlas a un módulo antes de actualizar. Y cambiar de plantilla es lo que más riesgo tiene.

1. Tools::jsonEncode y Tools::jsonDecode

Es el error que más se repite. En marzo de 2025 Gustavo volvía a quejarse en el grupo: otra actualización y otra vez módulos que usan Tools::jsonDecode y Tools::jsonEncode. Esas funciones ya estaban marcadas como obsoletas en 1.7 y en PrestaShop 8 desaparecieron, así que el módulo que las usa da un error fatal.

  • La solución en el código es directa: usar las funciones de PHP, json_encode() y json_decode(), que es lo que Gustavo hace en sus módulos.
  • Como apuntó otro compañero, que un módulo las siga usando es la señal clara de que no se ha adaptado a PrestaShop 8. Pide la versión compatible al desarrollador antes de actualizar la tienda.

Para encontrarlos antes de que fallen, busca esas dos cadenas en la carpeta modules/ de tu copia de pruebas.

2. OPcache sirviendo el código viejo

Tras alguna actualización, Gustavo tuvo problemas con OPcache: PHP seguía usando versiones compiladas de ficheros que ya habían cambiado. Si después de actualizar ves errores que no cuadran con el código nuevo, reinicia PHP o vacía OPcache desde el panel del hosting antes de buscar más.

3. Overrides que chocan

Gustavo los considera «sencillos de solucionar». Hay un caso que confunde mucho: al instalar un módulo, PrestaShop dice que su override entra en conflicto con uno existente, aunque el código de los dos ficheros sea idéntico. Le pasó a un compañero con dos módulos distintos en una tienda 8.2. La explicación del grupo: no se puede hacer override dos veces de la misma función. Si otro módulo, o los restos de uno desinstalado, ya sobrescriben ese método en /override, el segundo no se instala. Compara los dos ficheros, quita el método sobrante si viene de un módulo que ya no usas y borra el class_index.php de la caché.

4. Una actualización a medias

En marzo de 2025 un compañero actualizó desde 8.0 con el botón de actualizar en un clic y la tienda dejó de funcionar. Al restaurar, PrestaShop decía que faltaba la tabla de hooks. El consejo de Gustavo:

  1. Descarga de GitHub el ZIP de la misma versión que tienes instalada.
  2. Quita del servidor las carpetas src y vendor y sube las del ZIP.
  3. No subas encima sin quitar las anteriores: las actualizaciones añaden ficheros nuevos y, si mezclas, quedan restos de las dos versiones.

En su caso no bastó y la tienda seguía con error 500. Él mismo sacó la lección: la próxima actualización, de otra manera. Es decir, copia completa y prueba en una copia antes de tocar la tienda real.

5. Correos que dejan de salir en 8.2

En diciembre de 2024 Gustavo encontró por qué, en una tienda con PrestaShop 8.2, el módulo de transferencia bancaria daba error al enviar el correo: el servidor tenía proc_open y popen en la lista disable_functions de PHP y la tienda enviaba con la función mail de PHP. Al quitarlas de la lista, funcionó. Aun así, su recomendación es la de siempre: configura el correo por SMTP.

Si vas a dar el salto y prefieres no hacerlo solo, en Rekire hacemos actualizaciones y migraciones dentro de nuestros bonos de horas de soporte.

Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación

Cargando...
Cookies
Volver arriba