¿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.
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.
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/
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.
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.

