I – Objectif
Décrire l’installation et la configuration de PHP sur Ubuntu, via :
• libapache2-mod-php (intégré à Apache)
• PHP-FPM (FastCGI) – mode recommandé pour les serveurs de production
II – Prérequis
● Ubuntu Server 20.04.6 LTS
● Apache déjà installé (apache2)
● Droits sudo
III – Installation de PHP
1) Méthode simple : module Apache
sudo apt update
sudo apt install libapache2-mod-php php
✔ Intégration directe dans apache2
❌ Moins performant (processus Apache = CGI)
Apache utilisera automatiquement PHP.
Méthode 2 : PHP-FPM (recommandé)
sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm
Ensuite désactiver le module PHP intégré si activé
sudo a2dismod php7.4 mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
PHP-FPM est plus rapide, plus stable, et permet l'isolation par site.
PHP-FPM = meilleur pour les sites à forte charge + plus sécurisé + architecture moderne.
IV – Utilisation des extensions PHP
Lister les modules disponibles :
php -m
Installer une extension :
sudo apt install php-xml php-mbstring php-mysql php-curl
Localisation :
/etc/php/7.4/mods-available/
/etc/php/7.4/apache2/conf.d/
/etc/php/7.4/fpm/conf.d/
V – Configuration PHP
Fichier principal : php.ini
• Pour le module Apache :
/etc/php/7.4/apache2/php.ini
• Pour PHP-FPM :
/etc/php/7.4/fpm/php.ini
Paramètres courants :
memory_limit = 256M
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 60
Appliquer les changements FPM :
sudo systemctl reload php7.4-fpm
Modules PHP (extensions)
/etc/php/7.4/mods-available/
Lien symbolique créé dans :
/etc/php/7.4/apache2/conf.d/
Ou
/etc/php/7.4/fpm/conf.d/
VI – Pools PHP-FPM
PHP-FPM utilise des pools, chacun avec sa configuration dédiée :
Chaque pool a son fichier :
/etc/php/7.4/fpm/pool.d/*.conf
Chaque pool définit :
• Utilisateur / groupe
• Socket
• Limites de processus
• Paramètres spécifiques à un site
[mon_site]
user = www-data
group = www-data
listen = /run/php/php7.4-fpm-mon_site.sock
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
Redémarrer FPM après modification :
sudo systemctl restart php7.4-fpm
VII – Vérifications et Debug
Vérifier Apache + FPM
systemctl status apache2
systemctl status php7.4-fpm
Tester si Apache utilise FPM
apachectl -M | grep -E "proxy|fcgi"
Tester un script PHP
Créer /var/www/html/info.php :
<?php phpinfo();
Puis ouvrir :
http://serveur/info.php
VIII – Logs importants
/var/log/apache2/error.log
/var/log/php7.4-fpm.log
/var/log/php7.4-fpm/*.log
Très utile pour déboguer un 500 / erreur FPM.
IX – Problèmes courants (et solutions)
❌ 500 Internal Server Error
✔ Vérifier les permissions (www-data)
✔ Vérifier que le socket FPM existe :
ls /run/php/
❌ Module PHP activé + FPM activé
Cause : conflit entre mpm_prefork et mpm_event.
Solution :
sudo a2dismod mpm_prefork php7.4
sudo a2enmod mpm_event
sudo systemctl restart apache2
❌ FPM ne répond pas
Vérifier son statut :
systemctl status php7.4-fpm
❌ FPM saturé (site lent)
Regarder :
tail -f /var/log/php7.4-fpm.log
Augmenter pm.max_children.
X – Installer PHP 8.x (facultatif mais important)
Ubuntu 20.04 propose seulement PHP 7.4 en dépôt officiel.
Pour PHP 8.1 / 8.2 / 8.3 → on ajoute le dépôt Ondrej Surý :
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-fpm php8.2-mysql
Vérifier la version :
php -v
XI – Nettoyage des vieilles versions
Lister :
update-alternatives --display php
Supprimer une ancienne version :
sudo apt remove php7.4 php7.4-fpm