Dans un article en date du 24-11-1999 (voir lien) consacré au fichier php.ini, nous avions étudié succintement la structure de ce fichier, sa mise en place, son fonctionnement, et vu comment il pouvait servir à affiner certains paramétrages de PHP.

Lorsque l'on travail sur N sites hébergés sur le même serveur, il est parfois intéressant de paramétrer différement PHP suivant tels ou tels sites.

Nous allons voir comment la chose est possible, pour peu que PHP soit compilé en qualité de module d'Apache.

Paramétrage globaux et locaux

La fonction phpinfo() n'est plus à présenter. Mais si vous prenez le temps d'etudier plus en détail ce qu'elle retourne, vous remarquerez que la section Configuration contient trois colonnes : Directive, Master Value et Local Value.

En général, les colonnes Master Value et Local Value sont identiques. Master Value est construite en retournant les directives initialisées dans le fichier php.ini (si ce fichier est absent, ce sont les valeurs par defaut qui sont retournées). Local Value, quant à elle, est construite en retournant les directives initialisées localement. Nous allons voir comment initialiser de telles directives.

Etude de cas

Admettons qu'Apache soit installé sous /usr/local/apache. La racine de votre arborescence Web se trouvant sous /usr/local/apache/htdocs. Imaginons maintenant que vous ayez deux sous repertoires racine /usr/local/apache/htdocs/site1 et /usr/local/apache/htdocs/site2. Et pour finir, que vous désirez activer la directive magic_quote_gpc pour le site1 et la desactiver pour le site2.

Si vous faites un phpinfo() sous la racine du site1 et du site2, vous allez constater que la directive magic_quote_gpc retourne la même valeur (tant en local qu'en global), et ceci pour les 2 sites.

Afin d'activer la directive magic_quote_gpc pour le site1 et de la desactiver pour le site2, il existe 2 grandes methodes : modifier le httpd.conf ou créer un fichier .htaccess.

Modification du httpd.conf

Editez le fichier httpd.conf et ajoutez ceci,

<Directory /usr/local/apache/htdocs/site1/>
        php3_magic_quotes_gpc      on
</Directory>

<Directory /usr/local/apache/htdocs/site2/>
        php3_magic_quotes_gpc      off
</Directory>
Puis, relancez Apache (/usr/local/apache/bin/apachectl restart).

Si vous faites à nouveau un phpinfo() sous la racine du site1 et du site2, vous allez constater, au niveau de la colonne Local Value, que la directive magic_quote_gpc est activée (1) pour le site1. Et quelle est desactivée pour le site2 (0). Observez aussi, au passage, la directive retournée dans la colonne Global Value : dans l'un des cas, la directive sera différente de celle retournée dans la colonne Local Value. Nous avons initialisée une directive local :)

Creation d'un fichier .htaccess

Une autre méthode consiste à utiliser un fichier .htaccess.
Sous la racine du site1, nous allons créer un fichier .htaccess contenant,

php3_magic_quotes_gpc      on
Et sous la racine du site2, nous allons créer un fichier .htaccess contenant,

php3_magic_quotes_gpc      off
Pour finir, relancez Apache (/usr/local/apache/bin/apachectl restart).

Conclusion

La plupart des hébergeurs supportant PHP disposent de paramétrages particuliers (include_path sur Online par exemple). Le paramétrage de directives locales permet souvent de developper son site, sur son propre serveur local, en prenant en compte les specs de l'hébergeur qui aura la charge d'accueillir à terme votre développement. C'est un gain de temps non negligeable lors de l'étape de mise en ligne definitive :)

Consulter le lien