Guide des technologies

Tester et configurer PHP-FastCGI par site

4 min read Administration Mis à jour 27 Sep 2025
PHP-FastCGI par site : tests et configuration
PHP-FastCGI par site : tests et configuration

1 Contexte et objectif

Ce document explique comment tester une installation PHP exécutée via CGI/FastCGI, et comment appliquer des configurations PHP différentes pour chaque site web sur le même serveur. Définition rapide : phpinfo() affiche la configuration active de PHP.

2 Tester PHP via phpinfo

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

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

| |

Ensuite, ouvrez ce fichier dans un navigateur (http://www.example1.com/info.php). Si tout fonctionne, la sortie ressemble à une page phpinfo() et la ligne Server API doit indiquer CGI/FastCGI :

Capture d'écran de phpinfo montrant CGI/FastCGI dans Server API

Important : si vous ne voyez pas phpinfo(), vérifiez les permissions du fichier, la configuration d’Apache et les logs d’erreur.

3 php.ini personnalisé par site

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

Exemple : copier le php.ini par défaut dans le répertoire du site www.example2.com et changer le propriétaire :

cp /etc/php5/cgi/php.ini /var/www/web2/  
chown web2:web2 /var/www/web2/php.ini

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

Ouvrez ensuite le script wrapper du site :

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

… et placez /var/www/web2/ dans la variable PHPRC :

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

Rechargez Apache :

/ etc/init.d/apache2 reload

Créez un fichier phpinfo() pour www.example2.com :

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

| |

Ouvrez http://www.example2.com/info.php. La ligne Loaded Configuration File doit maintenant indiquer /var/www/web2/php.ini :

Capture d'écran de phpinfo montrant le chemin Loaded Configuration File vers /var/www/web2/php.ini

4 Modifier une seule directive PHP

Si vous ne souhaitez pas fournir un php.ini complet, vous pouvez modifier des paramètres individuels en ajoutant l’option -d à l’exécutable PHP dans le script wrapper.

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

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

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

Rechargez Apache :

/ etc/init.d/apache2 reload

Rouvrez http://www.example2.com/info.php et cherchez la ligne magic_quotes_gpc : elle doit indiquer Off :

Capture d'écran de phpinfo montrant magic_quotes_gpc désactivé

5 Vérifications et bonnes pratiques

  • Toujours recharger ou redémarrer Apache après les changements de scripts wrapper.
  • Vérifier les permissions et la propriété des fichiers php.ini et des wrappers.
  • Utiliser phpinfo() uniquement en test et le supprimer en production pour des raisons de sécurité.
  • Documenter les différences de configuration par site dans un fichier README dans le répertoire du site.

Note : l’option PHPRC définit le répertoire où PHP cherche php.ini. Assurez-vous que le chemin est accessible par l’utilisateur du processus.

6 Quand ça échoue

  • Symptomatique : phpinfo() renvoie une page blanche. Vérification rapide : logs d’Apache (/var/log/apache2/error.log).
  • Si PHP est lancé mais sans vos paramètres, vérifiez la ligne exec dans le script wrapper et les droits sur php.ini.
  • Si le site utilise un autre handler (mod_php, php-fpm), la méthode PHPRC ne s’applique pas ; adaptez la configuration au handler utilisé.

7 Approches alternatives

  • Utiliser PHP-FPM avec pools par site et un php.ini ou php_value par pool. Recommandé pour les performances et l’isolation.
  • Maintenir un petit script d’automatisation (Ansible/chef) pour distribuer les php.ini personnalisés et gérer les permissions.
  • Pour des réglages simples, utiliser .user.ini (si activé) ou directives PHP via FastCGI param d’après votre stack.

8 Checklist par rôle

  • Administrateur système

    • Vérifier la présence et le contenu de /var/www/php-fcgi-scripts//php-fcgi-starter
    • S’assurer que exec pointe vers l’exécutable PHP correct
    • Reload Apache après modifications
  • Développeur

    • Exécuter phpinfo() en local pour valider les changements
    • Confirmer que les directives modifiées correspondent aux besoins applicatifs
    • Retirer les fichiers phpinfo() après tests

9 Mini-méthodologie de mise en production

  1. Préparer php.ini personnalisé dans le répertoire du site.
  2. Mettre à jour le script php-fcgi-starter (PHPRC ou -d) et versionner le script.
  3. Tester localement via phpinfo().
  4. Recharger Apache puis surveiller les logs pendant 24–48 heures.
  5. Documenter le changement et ajouter un rollback plan si besoin.

10 Glossaire rapide

  • PHPRC : variable d’environnement indiquant le répertoire contenant php.ini.
  • php-fcgi-starter : script wrapper qui lance l’exécutable PHP pour un site.
  • phpinfo() : fonction PHP affichant la configuration active.

Liens utiles

À propos de l’auteur

Falko Timme est le propriétaire de Timme Hosting (hébergement nginx ultra-rapide). Il est le mainteneur principal de HowtoForge (depuis 2005) et l’un des développeurs principaux d’ISPConfig (depuis 2000). Il a contribué au livre O’Reilly « Linux System Administration ».

Résumé

  • Vous pouvez tester rapidement PHP avec phpinfo() et vérifier l’API Server.
  • PHPRC permet d’utiliser un php.ini différent par site via le script wrapper.
  • L’option -d de l’exécutable PHP change des directives individuelles sans php.ini complet.
  • En production, sécurisez et documentez toujours vos fichiers de configuration.
Auteur
Édition

Matériaux similaires

Installer Asterisk pour un PBX (guide débutant)
Téléphonie

Installer Asterisk pour un PBX (guide débutant)

Microsoft Store ne fonctionne pas : dépannage rapide
Support technique

Microsoft Store ne fonctionne pas : dépannage rapide

Sécurité WordPress : scanner et protéger en 10 étapes
Sécurité WordPress

Sécurité WordPress : scanner et protéger en 10 étapes

Flux RSS depuis notifications de forum via Blogger
Tutoriel

Flux RSS depuis notifications de forum via Blogger

Installer OCS Inventory NG Server 2 sur CentOS 5.5
Administration système

Installer OCS Inventory NG Server 2 sur CentOS 5.5

CHAR dans Google Sheets — insérer tous les caractères
Productivité

CHAR dans Google Sheets — insérer tous les caractères