"Si tú no trabajas por tus sueños, alguien te contratará para que trabajes por los suyos”

Steve Jobs

Afiliado
Dominios3Euros

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.

Nota importante: mod_php no existe para algunas versiones modernas como PHP 8.3 (según repositorio utilizado). Si no existe la carpeta /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.