Cambiar la versión de PHP en Apache (mod_php y PHP-FPM)
Dependiendo de la versión de Debian y de PHP instalada, Apache puede usar PHP de dos formas:
- mod_php: PHP integrado directamente en Apache (clásico).
- PHP-FPM: PHP como servicio independiente, comunicado por FastCGI (recomendado).
Algunas versiones modernas de PHP (como PHP 8.3 desde repositorios externos o experimentales) no incluyen mod_php, por lo que es obligatorio usar PHP-FPM. Sin embargo, versiones como PHP 7.x, 8.0, 8.1 o 8.2 sí pueden tener mod_php si el paquete existe en el repositorio.
Método 1: Cambiar la versión de PHP usando mod_php (cuando existe)
Este es el método tradicional y funciona sólo si tienes instalados paquetes como:
libapache2-mod-php7.4
libapache2-mod-php8.1
libapache2-mod-php8.2
Si quieres instalar varios modulo de php, puede hacerlo por ejemplo:
apt install php8.4-{intl,mysql,xml,zip,mbstring,curl,mcrypt}
Estos son los modulos que necesito en nuestro proyecto TPVFOX
Para cambiar la versión:
1. Desactivar la versión antigua
sudo a2dismod php7.4
2. Activar la versión nueva
sudo a2enmod php8.1
3. Reiniciar Apache
sudo systemctl restart apache2
Con esto Apache pasa a usar la nueva versión de PHP vía mod_php.
/etc/php/8.3/apache2/, es que NO tienes mod_php y debes usar PHP-FPM.Método 2: Cambiar la versión de PHP usando PHP-FPM (válido para todas las versiones)
PHP-FPM es el sistema recomendado y funciona con cualquier versión de PHP, incluso cuando no existe mod_php.
1. Instalar la versión deseada de PHP-FPM
sudo apt install php8.3 php8.3-fpm
2. Activar en Apache los módulos necesarios
sudo a2enmod proxy_fcgi setenvif
3. Asignar la versión de PHP-FPM al VirtualHost
En tu archivo del sitio web (por ejemplo /etc/apache2/sites-available/misitio.conf), añade:
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
Cambia php8.3-fpm.sock por la versión que quieras usar (php7.4-fpm.sock, php8.1-fpm.sock, etc.).
4. Reiniciar servicios
sudo systemctl restart php8.3-fpm
sudo systemctl restart apache2
Cómo comprobar la versión de PHP en Apache
Si usas mod_php
ls /etc/apache2/mods-enabled/php*
Si usas PHP-FPM
systemctl status php8.3-fpm
O bien crea un phpinfo().
Ventaja: Puedes tener varias versiones a la vez
Con PHP-FPM puedes instalar varias versiones (7.4, 8.1, 8.2, 8.3…) y asignar cada una a un VirtualHost distinto simplemente cambiando el socket:
/run/php/php7.4-fpm.sock
/run/php/php8.1-fpm.sock
/run/php/php8.3-fpm.sock
Este método es ideal para servidores con múltiples proyectos.
