En el mundo del desarrollo web, es común necesitar ejecutar aplicaciones que requieren versiones específicas de PHP. Por ejemplo, un sitio legacy podría depender de PHP 7.4, mientras que un proyecto nuevo usa PHP 8.3 o superior. Afortunadamente, en sistemas Linux Debian, es posible instalar y correr múltiples versiones de PHP en el mismo servidor utilizando PHP-FPM (FastCGI Process Manager), que permite manejar procesos independientes para cada versión.El repositorio mantenido por Ondřej Surý es una fuente confiable para obtener paquetes PHP actualizados y co-instalables en Debian. Este repositorio incluye versiones desde PHP 5.6 hasta las más recientes, como PHP 8.4, y soporta la instalación paralela sin conflictos.
En este artículo, te guiaré paso a paso para configurar esto en Debian 13 (Trixie), la versión estable actual a febrero de 2026
Paso 1: Agregar el Repositorio de Ondřej Surý
Primero, actualiza tu sistema y instala las dependencias necesarias para agregar repositorios HTTPS.
sudo apt-get update
sudo apt-get -y apt-transport-https software-properties-common gnupg2
Descarga e instala la clave del repositorio como se indica en el respositorio y el repositorio de acuerdo a la versión de Debian que tengas:
${SUDO} apt-get -y install lsb-release ca-certificates curl
${SUDO} curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
${SUDO} dpkg -i /tmp/debsuryorg-archive-keyring.deb
${SUDO} sh -c 'echo "deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
${SUDO} apt-get update
Paso 2: Instalar Múltiples Versiones de PHP con PHP-FPM
Ahora puedes instalar las versiones deseadas. Cada versión incluye su propio binario CLI y servicio FPM. Por ejemplo, para instalar PHP 8.3 y PHP 8.4:
sudo apt install php8.3 php8.3-cli php8.3-fpm php8.3-common php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip
sudo apt install php8.4 php8.4-cli php8.4-fpm php8.4-common php8.4-mysql php8.4-curl php8.4-gd php8.4-mbstring php8.4-xml php8.4-zip
Reemplaza con las versiones que necesites (ej. php7.4 para versiones más antiguas). Las extensiones comunes se instalan por versión para evitar conflictos.
Verifica las instalaciones:
php8.3 -v
php8.4 -v
Cada servicio FPM se inicia automáticamente:
sudo systemctl status php8.3-fpm
sudo systemctl status php8.4-fpm
Si no están activos, inícialos con sudo systemctl start phpX.Y-fpm y habilítalos al boot con sudo systemctl enable phpX.Y-fpm.
Paso 3: Configurar PHP-FPM para Cada Versión
PHP-FPM crea pools independientes por versión. Los archivos de configuración están en /etc/php/X.Y/fpm/. Edita /etc/php/X.Y/fpm/pool.d/www.conf para ajustes como memoria o procesos.Por ejemplo, para PHP 8.3:
sudo nano /etc/php/8.3/fpm/pool.d/www.conf
Busca y ajusta:
listen = /run/php/php8.3-fpm.sock
pm.max_children = 5 # Ajusta según recursos
Reinicia el servicio:
sudo systemctl restart php8.3-fpm
Repite para otras versiones. Esto permite que cada versión escuche en su propio socket Unix.
Paso 4: Integrar con el Servidor Web
Con Nginx
Instala Nginx si no lo tienes: sudo apt install nginx.
Para cada sitio, configura un virtual host que apunte al socket FPM correspondiente.
Crea un archivo en /etc/nginx/sites-available/:
server {
listen 80;
server_name ejemplo.com;
root /var/www/ejemplo;
index index.php index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Cambia por versión
}
}
Habilita el sitio: sudo ln -s /etc/nginx/sites-available/ejemplo /etc/nginx/sites-enabled/
Prueba y reinicia: sudo nginx -t && sudo systemctl restart nginx
Con Apache
Instala Apache: sudo apt install apache2.
Habilita módulos: sudo a2enmod proxy_fcgi setenvif.
Habilita la configuración FPM por versión: sudo a2enconf php8.3-fpm (repite por cada versión).
En el virtual host (/etc/apache2/sites-available/000-default.conf):
<VirtualHost *:80>
ServerName ejemplo.com
DocumentRoot /var/www/ejemplo
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
Reinicia Apache: sudo systemctl restart apache2.
Paso 5: Verificar y Cambiar Versión Predeterminada en CLI
Para el CLI, el comando php apunta a la versión más reciente. Cambia con: bash
sudo update-alternatives --config php
Selecciona la deseada.
Finlamente, crea un archivo info.php en el root de tu sitio con <?php phpinfo(); ?> y accede via navegador para confirmar la versión.

