Skip to content
Home » Instalación de Múltiples Versiones de PHP en un Servidor Debian Usando PHP-FPM y el Repositorio de Ondřej Surý

Instalación de Múltiples Versiones de PHP en un Servidor Debian Usando PHP-FPM y el Repositorio de Ondřej Surý

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.