$ ps-lando
Guías

Doctor

Checklist diagnóstico para tu sandbox — con auto-fixes opcionales.

Añadido en 0.6.0, ps-lando doctor es un comando diagnóstico que ejecuta una checklist de comprobaciones de salud contra tu sandbox y reporta ✓ / ⚠ / ✗ por ítem, con sugerencias de comando para arreglar cualquier cosa rara.

ps-lando doctor --fix va un paso más allá y pregunta para auto-recuperar todo lo que sea recuperable.

Ejecútalo

ps-lando doctor
ps-lando doctor --fix    # auto-recuperación interactiva

No tienes que pasar una ruta — doctor usa el cwd, igual que el resto de comandos.

Qué comprueba

ComprobaciónQué verifica¿Auto-fixable?
Lando arrancadolando list termina con código 0 y el proyecto está en la salida.Sí — ejecuta lando start.
BD accesibleUn SELECT 1 trivial corre vía landoMysql.No — sugiere lando restart.
Cuenta de módulos st* activosCuenta ps_module.active=1 para filas st% en BD. Compara con el esperado (desde module_selection en .ps-lando.json).Sí — reintenta cualquier módulo installed-but-inactive.
Tema activo = pandaSELECT theme_name FROM ps_shop.Sí — ejecuta UPDATE ps_shop SET theme_name='panda' + cache clear.
Front HTTPcurl contra http://<project>.lndo.site/ — espera 200.No — sugiere ps-lando repair.
BO HTTPcurl contra http://<project>.lndo.site/<admin_dir>/ — espera 200 o 302.No.
init-scripts/ existeComprobación blanda — informativa, no es error.n/a
post-scripts/ existeComprobación blanda — informativa, no es error.n/a
Errores recientes en var/logs/Hace grep de líneas ERROR / CRITICAL en el último log.No — los muestra para que tú los leas.
Resumen del último .ps-lando-install.logReporta cuenta de módulos fallidos en el último install.No.
/app/var/cache/{prod,dev}/purifier/ existenPS 8.2.x Y PS 9.1.x se los saltan — mira el bug de cache de HTMLPurifier.Sí — mkdir -p + chown.

Leer la salida

Cada comprobación produce uno de tres estados:

✓ Lando running
✓ Database accessible
✗ Active modules: 53/56 active (3 installed-but-inactive: stbanner, stswiper, stupgrader)
  fix: ps-lando doctor --fix    # retry the inactive ones
✓ Active theme: panda
⚠ Recent errors in var/logs/prod-log.txt:
    [2026-04-25 14:32] CRITICAL — module stswiper: HTMLPurifier cache dir missing
✓ Hooks: 0 init / 0 post
  • — limpio.
  • — informativo, no es un fallo duro (p. ej. líneas de log que deberías mirar).
  • — fallo duro con sugerencia de fix debajo.

Defaults de --fix

Para cada ítem fallido que sea fixable, --fix pregunta interactivamente. Los defaults son:

FixDefault
lando startSí (no destructivo)
mkdir -p de directorios de purifierSí (no destructivo)
Reintentar módulos installed-but-inactiveSí (no destructivo)
UPDATE ps_shop SET theme_name='panda' + cache clearNo (destructivo — toca BD)

Los ítems que no son auto-recuperables (BD inaccesible, fallos HTTP) imprimen sugerencias pero no preguntan.

ps-lando doctor --fix
✓ Lando running
✗ Active modules: 53/56 active
  ? Retry installed-but-inactive modules? (Y/n) Y
  → retrying stbanner... ✓
  → retrying stswiper... ✓
  → retrying stupgrader... ⚠ still inactive (known PS 9 quirk)
✗ Theme: hummingbird (expected: panda)
  ? Run UPDATE ps_shop SET theme_name='panda' + cache clear? (y/N) y
  ✓ theme reset

Cuándo ejecutarlo

  • Después de un create fallido — comprobación rápida de cordura.
  • Después de un db reset — verifica que todo volvió limpio.
  • Volviendo a un sandbox después de semanas — chequeo de salud rápido.
  • Antes de reportar un bug — pega la salida de doctor como tu primer diagnóstico.

Lo que doctor NO atrapa

  • Bugs funcionales a nivel de módulo (un módulo se instala limpio pero no renderiza su hook).
  • Problemas de renderizado de tema que no estén en var/logs/.
  • Errores de JS en el lado del navegador.
  • Conflictos entre módulos (dos módulos registrando el mismo hook con lógica incompatible).

Para esos, usa el BO + DevTools del navegador como siempre.

Doctor como smoke test

Puedes ejecutar doctor en CI o después de cualquier paso del pipeline que toque el sandbox:

ps-lando db reset -y
ps-lando hooks run-all
ps-lando doctor || exit 1   # bail si algo está rojo

Se devuelve un código de salida distinto de cero si alguna comprobación está en estado ✗. Los estados ⚠ no fallan la ejecución.

Siguientes pasos

On this page