- Actualizamos el sistema:
sudo apt update
sudo apt upgrade -y - Instalamos las dependencias que vamos a necesitar:
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common curl wget
- Agremos el repositorio de Ondřej Surý:
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update - Instalamos php 7.4 y sus módulos necesarios:
sudo apt install -y php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-zip
- Instalamos php 8.3 y sus módulos necesarios:
sudo apt install -y php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip
- Comprobamos las instalaciones:
php7.4 -v
php8.3 -v - Podemos cambiar la versión activa de php manualmente desde la línea de comandos:
sudo update-alternatives --set php /usr/bin/php7.4
O para PHP 8.3:sudo update-alternatives --set php /usr/bin/php8.3
- O Habilitar y arrancar PHP-FPM para cada versión:
sudo systemctl enable php7.4-fpm
O para PHP 8.3:
sudo systemctl start php7.4-fpmsudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm
Esta metodología es segura y ampliamente usada en entornos de producción y desarrollo.
Configuración extra para Moodle
Para usar con Moodle hay que instalar también los siguientes paquetes:
sudo apt install php7.4-intl php7.4-xmlrpc php7.4-soap
Y
sudo apt install php8.3-intl php8.3-xmlrpc php8.3-soap
En los archivos /etc/php/X.Y/fpm/php.ini hay que añadir o cambiar en la sección correspondiente:
max_input_vars = 5000
Y reiniciamos los servicios php-fpm
sudo systemctl restart php7.4-fpm
sudo systemctl restart php8.3-fpm
¿Qué diferencia, ventajas e inconvenientes, hay entre usar update-alternatives o php-fpm?
update-alternatives y PHP-FPM cumplen funciones distintas en la gestión de PHP en sistemas Debian:
- update-alternatives: Herramienta del sistema para seleccionar la versión de un ejecutable por defecto en la línea de comandos (CLI), como php, phar, etc.
- PHP-FPM: Gestor de procesos FastCGI para PHP, diseñado para servir aplicaciones web de alto rendimiento, gestionando pools de procesos PHP que atienden peticiones web a través de sockets o puertos TCP.
Cuadro comparativo:
Característica | update-alternatives | PHP-FPM |
---|---|---|
Propósito | Selección de versión de ejecutable CLI | Procesamiento eficiente de peticiones web PHP |
Ámbito | Línea de comandos y scripts del sistema | Servidores web (Apache, Nginx, etc.) |
Cambio de versión | Afecta solo a la CLI (no al servidor web) | Cada pool puede usar una versión diferente |
Concurrencia | No aplica | Maneja múltiples peticiones concurrentes |
Personalización | Limitada a la selección de ejecutable | Pools configurables por usuario, dominio, etc. |
Consideraciones:
- Cambiar la versión de PHP con update-alternatives solo afecta a la CLI, no a los sitios web servidos por PHP-FPM.
- Para que un servidor web use una versión específica de PHP-FPM, debes apuntar el socket o puerto correspondiente en la configuración del servidor web.
- No puedes tener un único socket genérico para alternar versiones de PHP-FPM sin perder la posibilidad de ejecutar varias versiones simultáneamente.
- PHP-FPM es imprescindible para entornos web modernos y de alto tráfico, mientras que update-alternatives es útil para scripts y tareas del sistema.