🚀 Nueva exigencia de PHP en Moodle: cómo resolver el error de Composer en Plesk

En las versiones más recientes de Moodle, el archivo composer.json ahora exige PHP ≥ 8.2.

Si intentas ejecutar:

composer install --no-dev --classmap-authoritative

puede aparecer un error como:

Root composer.json requires php >=8.2.0 but your php version (8.1.x) does not satisfy that requirement.

Aunque tu Moodle funcione perfectamente en el navegador, Composer puede fallar. ¿Por qué?

🔎 El problema real: PHP Web ≠ PHP CLI

En servidores administrados con Plesk, es muy común tener varias versiones de PHP instaladas al mismo tiempo.

Por ejemplo:

EntornoVersión
PHP FPM (web)8.4.18 ✅
PHP CLI (terminal)8.1.x ❌

Moodle puede estar funcionando con PHP 8.4 en producción, pero Composer usa la versión CLI del sistema (8.1), lo que genera el conflicto.

🛠 Cómo solucionarlo correctamente

✅ 1️⃣ Verificar qué versión usa CLI

php -v

Si muestra 8.1.x, ahí está el problema.

✅ 2️⃣ Usar directamente el PHP correcto de Plesk

En vez de cambiar el PHP global del sistema (lo cual puede romper otros sitios), ejecuta Composer con la versión correcta:

/opt/plesk/php/8.4/bin/php /usr/lib/plesk-9.0/composer.phar install --no-dev --classmap-authoritative

De esta manera:

  • Composer usa PHP 8.4
  • Coincide con la versión de producción
  • No se afecta ningún otro dominio

✅ 3️⃣ Verificar extensiones necesarias

Antes de ejecutar Composer, revisa que PHP tenga las extensiones requeridas:

/opt/plesk/php/8.4/bin/php -m

Moodle necesita al menos:

  • curl
  • zip
  • gd
  • dom
  • simplexml
  • xml
  • xmlreader
  • intl
  • mbstring
  • opcache
  • mysqli

Si falta alguna, puedes instalarla desde Plesk:

plesk installer --select-release-current --install-component php8.4-nombre_extension

⚠️ Qué NO hacer

❌ No usar:

composer install --ignore-platform-reqs

Eso solo oculta el problema y puede romper Moodle después.

❌ No cambiar update-alternatives del sistema si estás en un servidor con múltiples clientes.

🎯 Recomendación adicional

En servidores Plesk:

Siempre ejecuta Composer así:

/opt/plesk/php/VERSION/bin/php /usr/lib/plesk-9.0/composer.phar

Así garantizas coherencia entre:

  • Entorno web
  • CLI
  • Dependencias instaladas

🧠 Conclusión

La “novedad” no es realmente un bug de Moodle, sino una consecuencia natural de la evolución del ecosistema PHP:

  • Moodle exige versiones modernas.
  • Composer valida estrictamente los requisitos.
  • Plesk permite múltiples versiones simultáneas.

El problema aparece cuando CLI y FPM no coinciden. Una vez alineadas las versiones, la instalación funciona sin inconvenientes. Si administras múltiples instancias de Moodle en Plesk, este pequeño detalle puede ahorrarte horas de debugging.

Saludos! Marchelo2212