# 🚀 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:
```bash
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:
|Entorno|Versió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
```bash
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:
```bash
/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:
```bash
/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:
```bash
plesk installer --select-release-current --install-component php8.4-nombre_extension
```
# ⚠️ Qué NO hacer
❌ No usar:
```bash
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í:
```bash
/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