Guide des technologies

Configurer PHP-FastCGI par site sur Apache

3 min read PHP DevOps Mis à jour 21 Oct 2025
PHP-FastCGI par site sur Apache
PHP-FastCGI par site sur Apache

Important: ce guide suppose que vous avez déjà des virtual hosts fonctionnels et des scripts wrapper php-fcgi-starter pour chaque site. Définition rapide: FastCGI est un protocole qui permet à PHP de tourner en processus persistant séparé du serveur web.

4 Testing

Créez un petit fichier de test PHP pour le site www.example1.com, par exemple :

vi /srv/www/web1/web/info.php

Ajoutez le contenu suivant :

Ouvrez ensuite dans un navigateur : http://www.example1.com/info.php

Vous devriez voir une page phpinfo() et la ligne Server API doit indiquer CGI/FastCGI.

Sortie phpinfo montrant la ligne Server API indiquant CGI/FastCGI

5 php.ini personnalisé pour chaque site

Chaque site ayant son propre script wrapper php-fcgi-starter, vous pouvez utiliser un php.ini différent par site.

Exemple : copiez le php.ini par défaut dans le dossier du site www.example2.com et changez le propriétaire :

cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini

(Vous pouvez maintenant modifier /srv/www/web2/php.ini selon vos besoins.)

Ouvrez le script wrapper du site :

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

Assurez-vous que la variable PHPRC pointe vers /srv/www/web2/ :

#!/bin/sh
PHPRC=/srv/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

Redémarrez ensuite Apache :

systemctl restart apache2.service

Créez un fichier info.php pour www.example2.com :

vi /srv/www/web2/web/info.php

Ouvrez http://www.example2.com/info.php et vérifiez que la ligne Loaded Configuration File indique /srv/www/web2/php.ini.

Capture phpinfo montrant Loaded Configuration File pointant vers /srv/www/web2/php.ini

6 Modifier un seul paramètre PHP

Si vous ne voulez pas fournir un php.ini complet, vous pouvez ajuster des options individuelles en ajoutant -d à l’exécutable PHP dans le script wrapper.

Par exemple, pour désactiver magic_quotes_gpc pour www.example2.com :

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

Modifiez le script pour inclure l’option -d :

#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi -d magic_quotes_gpc=off

Redémarrez Apache :

systemctl restart apache2.service

Rechargez http://www.example2.com/info.php et recherchez la ligne magic_quotes_gpc — elle doit afficher Off.

phpinfo montrant magic_quotes_gpc réglé sur Off

Liens utiles

Quand ça échoue

  • phpinfo() n’apparaît pas ou Server API n’est pas CGI/FastCGI: vérifiez que le virtual host utilise le bon wrapper php-fcgi-starter et que le binaire php-cgi existe.
  • Loaded Configuration File n’affiche pas le chemin attendu: assurez-vous que PHPRC est exporté correctement et que le script wrapper est exécuté par le bon utilisateur.
  • Les changements -d n’ont pas d’effet: vérifiez la syntaxe et que le service PHP-FastCGI a bien été redémarré (via le restart d’Apache ou du pool FastCGI selon votre configuration).

Approches alternatives

  • Utiliser des pools PHP-FPM (php-fpm) au lieu de mod_fcgid/php-cgi pour une gestion plus fine des processus et des pools par site.
  • Centraliser les réglages partagés dans un php.ini principal et ne personnaliser que les options locales via -d pour réduire la duplication.

Mini-méthodologie de déploiement

  1. Créer le php.ini spécifique ou décider des options -d.
  2. Mettre à jour le script php-fcgi-starter (PHPRC ou option -d).
  3. Redémarrer Apache.
  4. Vérifier via phpinfo().
  5. Logger la configuration et conserver un backup du php.ini original.

Checklist rôle-based

  • Administrateur système: vérifier permissions, ownership, et redémarrage des services.
  • Développeur PHP: tester les fonctions de l’application après changement de configuration.
  • Responsable sécurité: s’assurer que les modifications n’activent pas d’extensions ou d’options dangereuses.

Критерии приёмки

  • phpinfo() affiche Server API CGI/FastCGI.
  • Loaded Configuration File montre le php.ini attendu pour le site.
  • Les options passées via -d reflètent les valeurs requises.

Résumé

Vous pouvez gérer la configuration PHP par site soit en pointant PHPRC vers un dossier contenant un php.ini spécifique, soit en passant des options individuelles avec -d dans le script php-fcgi-starter. Toujours redémarrer Apache après modification et valider avec phpinfo().

Notes: adaptez les chemins et les utilisateurs aux conventions de votre distribution et de votre infrastructure.

Auteur
Édition

Matériaux similaires

Installer et utiliser Podman sur Debian 11
Conteneurs

Installer et utiliser Podman sur Debian 11

Guide pratique : apt-pinning sur Debian
Administration système

Guide pratique : apt-pinning sur Debian

OptiScaler : activer FSR 4 dans n'importe quel jeu
Jeux PC

OptiScaler : activer FSR 4 dans n'importe quel jeu

Dansguardian + Squid NTLM sur Debian Etch
réseau

Dansguardian + Squid NTLM sur Debian Etch

Corriger l'erreur d'installation Android sur SD
Android, Dépannage

Corriger l'erreur d'installation Android sur SD

KNetAttach et remote:/ — Dossiers réseau KDE
Tutoriel

KNetAttach et remote:/ — Dossiers réseau KDE