Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu

23 avril 2026 — par

Voici un article technique détaillé sur la cohabitation de plusieurs versions de PHP-FPM (par exemple : 7.4, 8.1 et 8.3/8.4) sur un serveur Apache (Debian/Ubuntu), en utilisant des configurations distinctes par VirtualHost Apache. Ce type de configuration est utile pour héberger des applications PHP ayant des dépendances sur des versions spécifiques.

Objectif

  • Héberger plusieurs sites web sur un même serveur Apache.

  • Chaque site utilise une version différente de PHP (par exemple PHP 7.4, 8.1, 8.3, 8.4).

  • Utiliser PHP-FPM (FastCGI Process Manager) pour chaque version.

  • Définir la version PHP par VirtualHost Apache.

1. Prérequis

  • Système Debian 11/12 ou Ubuntu 20.04/22.04/24.04

  • Droits sudo/root

  • Apache installé :

sudo apt install apache2

📦 2. Installation des versions PHP et modules nécessaires

Étape 1 : Ajouter le PPA (Ubuntu) ou les dépôts Sury (Debian)

Pour Debian :

sudo apt install lsb-release apt-transport-https ca-certificates gnupg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | 
  sudo tee /etc/apt/sources.list.d/php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/php.gpg
sudo apt update

Étape 2 : Installer plusieurs versions de PHP-FPM

sudo apt install php7.4 php7.4-fpm php7.4-cli php7.4-mysql php7.4-curl php7.4-xml php7.4-mbstring
sudo apt install php8.1 php8.1-fpm php8.1-cli php8.1-mysql php8.1-curl php8.1-xml php8.1-mbstring
sudo apt install php8.3 php8.3-fpm php8.3-cli php8.3-mysql php8.3-curl php8.3-xml php8.3-mbstring

Remplacez 8.3 par 8.4 si disponible à la date d’installation.

Étape 3 : Démarrer et activer les services PHP-FPM

sudo systemctl enable --now php7.4-fpm
sudo systemctl enable --now php8.1-fpm
sudo systemctl enable --now php8.3-fpm

 

🌐 3. Configuration d’Apache avec proxy_fcgi

Étape 1 : Activer les modules nécessaires

sudo a2enmod proxy_fcgi setenvif
sudo a2enmod actions
sudo systemctl restart apache2

🏗️ 4. Création de VirtualHosts avec versions PHP séparées

Exemple : trois sites web avec différentes versions de PHP

  • site74.example.com → PHP 7.4

  • site81.example.com → PHP 8.1

  • site83.example.com → PHP 8.3

🧾 VirtualHost pour PHP 7.4

<VirtualHost *:80>
    ServerName site74.example.com
    DocumentRoot /var/www/site74

    <FilesMatch .php$>
        SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/site74_error.log
    CustomLog ${APACHE_LOG_DIR}/site74_access.log combined
</VirtualHost>

 

🧾 VirtualHost pour PHP 8.1

<VirtualHost *:80>
    ServerName site81.example.com
    DocumentRoot /var/www/site81

    <FilesMatch .php$>
        SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/site81_error.log
    CustomLog ${APACHE_LOG_DIR}/site81_access.log combined
</VirtualHost>

 

🧾 VirtualHost pour PHP 8.3 (ou 8.4)

<VirtualHost *:80>
    ServerName site83.example.com
    DocumentRoot /var/www/site83

    <FilesMatch .php$>
        SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/site83_error.log
    CustomLog ${APACHE_LOG_DIR}/site83_access.log combined
</VirtualHost>

 

🚀 Activer les sites et recharger Apache

sudo a2ensite site74.conf
sudo a2ensite site81.conf
sudo a2ensite site83.conf
sudo systemctl reload apache2

 

✅ 5. Vérification

Placer un info.php dans chaque DocumentRoot :

<?php phpinfo(); ?>

→ Vérifiez que chaque site utilise la bonne version de PHP.

 

🧩 6. Ajustements et sécurité

🔐 Permissions

Assurez-vous que les sockets /run/php/phpX.X-fpm.sock sont accessibles par l’utilisateur Apache (www-data par défaut).

⚙️ Tuning PHP-FPM (par version)

Modifier les fichiers :

  • /etc/php/7.4/fpm/pool.d/www.conf

  • /etc/php/8.1/fpm/pool.d/www.conf

  • /etc/php/8.3/fpm/pool.d/www.conf

Exemple pour modifier le port/socket, mémoire, limites de process, etc.

🧠 Résumé

Site / VHost Version PHP Fichier Socket
site74.example.com 7.4 /run/php/php7.4-fpm.sock
site81.example.com 8.1 /run/php/php8.1-fpm.sock
site83.example.com 8.3 ou 8.4 /run/php/php8.3-fpm.sock ou 8.4

 

🧪 Bonus : script bash pour vérifier les sockets PHP-FPM

#!/bin/bash
for v in 7.4 8.1 8.3 8.4; do
    sock="/run/php/php${v}-fpm.sock"
    if [ -S "$sock" ]; then
        echo "PHP-FPM $v is active and listening on $sock"
    else
        echo "PHP-FPM $v socket not found"
    fi
done

🧾 Conclusion

Cette configuration permet de faire cohabiter plusieurs applications avec des dépendances PHP différentes, tout en maintenant un serveur Apache unifié et des pools PHP-FPM indépendants.

Index complet

Tous les articles (35)

Date Article Tags
27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs