Error 500 al actualizar PrestaShop: cómo reiniciar la actualización

Actualizar PrestaShop debería ser un proceso sin sobresaltos. Pero a veces, a mitad de la actualización, aparece un error 500 que deja la tienda en un estado intermedio y el módulo Update Assistant sin opción clara de continuar. Esto es exactamente lo que me ocurrió al actualizar una tienda de un cliente de la versión…

GC
Error 500 al actualizar PrestaShop: cómo reiniciar la actualización

¿Por qué aparece el error 500 durante la actualización de PrestaShop?

El error 500 durante una actualización de PrestaShop puede tener varias causas: un módulo incompatible, un timeout del servidor, falta de memoria PHP… o, como en este caso, un problema de permisos en la carpeta de caché.

El módulo de actualización intenta vaciar la caché de Smarty durante el proceso. Si algún archivo dentro de /var/cache/prod/smarty/ tiene permisos restrictivos, el servidor devuelve un error de tipo Permission denied y aborta la actualización a mitad.

⚠️ Error habitual en el log:
IOException: Failed to remove file "…smarty/cache/…": unlink(…): Permission denied

Mi error inicial: borrar la carpeta de caché no fue suficiente

La primera vez que vi el error intenté la solución más obvia: eliminar manualmente la carpeta /var/cache/ desde el panel de hosting. La borré, reintenté la actualización… y el error volvió a aparecer.

¿Por qué? Porque durante el propio proceso de actualización, PrestaShop regenera archivos de caché sobre la marcha. Esos nuevos archivos se crean con los permisos del propietario del proceso PHP del servidor, que en algunos hostings no coincide con el usuario FTP. Resultado: archivos que el módulo de actualización no puede eliminar.

La solución no es borrar la caché, sino cambiar sus permisos antes de continuar.

Solución: cambiar permisos de la carpeta de caché a 777

La solución definitiva fue acceder al servidor por SSH y aplicar permisos 777 de forma recursiva sobre la carpeta de caché:

chmod -R 777 /var/www/vhosts/tudominio.com/httpdocs/var/cache/
ℹ️ Nota: Los permisos 777 son adecuados para resolver el problema puntualmente durante la actualización. Una vez completada, lo ideal es restaurarlos a valores más restrictivos (755/644) o dejar que el sistema los gestione automáticamente.

El truco: cómo reiniciar la actualización después del error 500

Aquí viene la parte más interesante. Una vez resuelto el problema de permisos, me encontré con otro obstáculo: el módulo Update Assistant no tiene una opción de «reiniciar» o «continuar» la actualización interrumpida.

Lo que sí hace el módulo es leer la versión actual de PrestaShop desde el archivo src/Core/Version.php. Si esa versión coincide con la versión de destino, da la actualización por completada y no te deja volver a lanzarla.

La solución es engañar al módulo devolviendo las constantes de versión a su valor original, para que entienda que la tienda sigue en la versión anterior y permita relanzar el proceso desde el principio.

Paso 1 — Edita el archivo Version.php

Accede por FTP o desde el gestor de archivos de tu hosting a la ruta:

src/Core/Version.php

Y devuelve las constantes a los valores de la versión de origen (en este caso, 8.2.1):

public const VERSION = '8.2.1';
public const MAJOR_VERSION_STRING = '8';
public const MAJOR_VERSION = 8;
public const MINOR_VERSION = 2;
public const RELEASE_VERSION = 1;

Paso 2 — Corrige los permisos de la caché (si no lo has hecho ya)

chmod -R 777 /var/www/vhosts/tudominio.com/httpdocs/var/cache/

Paso 3 — Relanza la actualización desde Update Assistant

Con la versión revertida en el archivo y los permisos corregidos, ve al módulo Update Assistant en el panel de administración de PrestaShop. El módulo ya detectará la versión 8.2.1 como instalada y te ofrecerá actualizar a la 8.2.6. Como la copia de seguridad ya estaba realizada del primer intento, puedes saltarte ese paso y lanzar directamente la actualización.

💡 Tip: Si el módulo te pide hacer una nueva copia de seguridad antes de continuar, puedes omitirla siempre que la copia del primer intento se haya completado correctamente y no hayan cambiado datos críticos en la tienda entre medias.

Resumen del proceso en 3 pasos

Paso Acción Dónde
1 Cambiar permisos de /var/cache/ a 777 de forma recursiva SSH / Hosting
2 Editar src/Core/Version.php y revertir a la versión original FTP / Gestor de archivos
3 Relanzar la actualización desde Update Assistant Admin PrestaShop

Un problema puntual, no un motivo de pánico

Un error 500 a mitad de una actualización de PrestaShop da bastante vértigo, especialmente si es la tienda online de un negocio activo. Pero en la mayoría de casos tiene solución sin necesidad de restaurar la copia de seguridad ni perder datos.

La clave está en identificar la causa real del error antes de actuar, y en este caso el log del módulo da una pista muy clara: permisos insuficientes sobre la caché. Con los permisos corregidos y el pequeño truco del Version.php, la actualización se completó sin más problemas.

¿Tienes una tienda PrestaShop y prefieres que las actualizaciones las gestione un profesional? Hablamos por WhatsApp y te cuento cómo funciona el mantenimiento web que ofrezco.

Linkedin