BlogGestión e-commerce

Update Assistant bloqueado: cómo rescatar una actualización a PrestaShop 9

Caché que no se vacía, servicio de Symfony inexistente, proceso que se detiene a medias: los errores reales del Update Assistant y cómo terminar por CLI.

Presta Debug29 de julio de 2026 5 min de lectura
Bucle de actualización roto y barra de progreso congelada

Una actualización fallida deja la tienda en un estado inestable

El Update Assistant de PrestaShop es una herramienta excelente cuando todo va bien. Cuando se detiene a mitad de camino, el sitio se queda con los archivos en versión 9 y la base de datos en versión 8, lo que produce errores 500 imposibles de leer. La primera regla es, por tanto, sencilla: nunca se lanza una actualización sin una copia de seguridad restaurable y probada.

Estos son los fallos que más vemos en nuestras intervenciones, con su causa y su solución.

«Can't empty cache directory»

Es el error más habitual en los saltos de 9.0.x a 9.1.x, sobre todo con PHP 8.4.

El módulo intenta vaciar var/cache/ y se topa con archivos que pertenecen a otro usuario del sistema, normalmente porque se han lanzado comandos por SSH con una cuenta distinta a la del servidor web.

Solución:

rm -rf var/cache/prod var/cache/dev
chown -R www-data:www-data var/

Adapte el usuario a su alojamiento. No borre nunca var/cache en sí: solo su contenido.

«has a dependency on a non-existent service mbo.modules.repository»

Este error, que devuelve un HTTP 500 durante el paso de comprobación de versión, procede del contenedor de inyección de dependencias de Symfony, que se ha quedado incoherente: el módulo MBO (el marketplace integrado) está declarado, pero sus servicios no se han construido.

Tres acciones, en este orden:

  1. Actualizar el propio módulo Update Assistant antes que nada. Una versión antigua del módulo sigue siendo la primera causa de fallo.
  2. Borrar el contenido de var/cache/ y comprobar que la carpeta app/cache/ existe y tiene permisos de escritura.
  3. Desactivar temporalmente ps_mbo en ps_module y volver a lanzar el proceso.

El proceso se detiene sin mensaje

En alojamientos compartidos, el Update Assistant choca con tres límites invisibles: max_execution_time, la memoria y el propio timeout del servidor web. La interfaz se queda entonces con una rueda girando indefinidamente.

La solución pasa por la línea de comandos, que no conoce el timeout HTTP:

php modules/autoupgrade/bin/console update:start --config-file-path=config.json

Compruebe antes que symlink() no figura en la lista disable_functions de su configuración PHP: sin esa función, el cambio de carpetas falla en silencio. Ponga memory_limit a -1 mientras dure la operación.

La trampa de la reanudación manual

Cuando la actualización falla a mitad de camino, la tentación es ejecutar «a mano» los archivos SQL de migración. Es una trampa.

Esos archivos contienen directivas PHP encapsuladas en comentarios SQL, del tipo /* PHP:add_column(...) */. Ejecutados en phpMyAdmin, esos comentarios se ignoran: la estructura de la base parece migrada cuando en realidad faltan columnas y datos. Los síntomas aparecen semanas más tarde, en alguna funcionalidad que se usa poco.

Si la migración falla, restaure la copia de seguridad y empiece de nuevo desde cero. Nunca repare una migración aplicada a medias.

La preparación que evita el 80 % de los fallos

Antes de lanzar nada:

  • Copiar archivos y base de datos, y probar la restauración en un entorno aparte.
  • Desactivar todos los módulos que no sean nativos. Un módulo que revienta durante la fase de actualización interrumpe todo el proceso. Ya los reactivará uno a uno después.
  • Volver al tema Classic mientras dure la operación, sobre todo si su tema sobrescribe plantillas del núcleo.
  • Comprobar la versión de PHP. PrestaShop 9 exige PHP 8.1 como mínimo y admite hasta la 8.4. Una actualización lanzada sobre PHP 7.4 fallará sin remedio.
  • Comprobar el espacio en disco. El proceso duplica el sitio entero: hace falta al menos el doble del tamaño actual.
  • Listar los módulos incompatibles. PrestaShop 9 ha retirado Guzzle, League Tactician y Swift Mailer. Cualquier módulo que dependa de ellos producirá un error fatal tras el cambio.

Después de actualizar: las pruebas que cuentan

Una actualización «correcta» solo se da por buena cuando se han comprobado estos puntos:

  1. Hacer un pedido de principio a fin, pago real incluido.
  2. Comprobar la recepción de los correos transaccionales, que suelen romperse al pasar a la 9 por el cambio de biblioteca de envío.
  3. Revisar los transportistas y los widgets de punto de recogida en el proceso de compra.
  4. Regenerar las miniaturas y comprobar cómo se ven las imágenes de producto.
  5. Releer var/logs/: los avisos de obsolescencia de hoy son las averías de la próxima versión.

Si el salto a la versión 9 le preocupa, nuestro artículo sobre el fin de soporte de PrestaShop 8 le ayudará a elegir el momento, y nuestra página de migración de PrestaShop detalla nuestro método.

¿Tiene una actualización bloqueada ahora mismo?

Retomamos migraciones interrumpidas, incluso con la tienda ya fuera de línea. Diagnóstico gratuito, respuesta en menos de 1 h, de 9:00 a 22:00 los 7 días de la semana.