Tester et configurer PHP-FastCGI par site

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 :
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 :
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 :
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
- Vérifier la présence et le contenu de /var/www/php-fcgi-scripts/
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
- Préparer php.ini personnalisé dans le répertoire du site.
- Mettre à jour le script php-fcgi-starter (PHPRC ou -d) et versionner le script.
- Tester localement via phpinfo().
- Recharger Apache puis surveiller les logs pendant 24–48 heures.
- 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
- mod_fcgid : http://httpd.apache.org/mod_fcgid/
- Apache : http://httpd.apache.org/
- PHP : http://www.php.net/
- Debian : http://www.debian.org/
À 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.
Matériaux similaires
Installer Asterisk pour un PBX (guide débutant)

Microsoft Store ne fonctionne pas : dépannage rapide

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

Flux RSS depuis notifications de forum via Blogger
Installer OCS Inventory NG Server 2 sur CentOS 5.5
