Traditionnellement, la configuration de PHP se définit dans le fichier php.ini. Par exemple, sur une Debian, le fichier de configuration de PHP pour une utilisation depuis Apache se trouve à cet emplacement : /etc/php5/apache2/php.ini (pour une installation depuis les dépôts).

Seulement voilà, on a parfois besoin d'appliquer une configuration PHP seulement à un virtual host en particulier et non aux autres. Par exemple, on peut souhaiter activer l'affichage des erreurs de PHP pour une application web encore en développement sans modifier la configuration des applications en production. Pour réaliser cette tâche, Apache met à notre disposition les instructions suivantes (valables uniquement pour le module PHP d'Apache) :

php_value <directive> <valeur>
php_admin_value <directive> <valeur>
php_flag <directive> <on|off>
php_admin_flag <directive> <on|off>

Pour pouvoir les utiliser au sein d'un .htaccess, il faut posséder les privilèges AllowOverride Options ou AllowOverride All.

Les instructions php_value et php_admin_value permettent de modifier la valeur de la directive précisée en paramètre. Exemple :

php_admin_value open_basedir /var/www/vhosts/mysite

Les instructions php_flag et php_admin_flag, quant à elles, permettent d'activer ou de désactiver l'option précisée en paramètre (à utiliser pour les directives booléennes). Exemple :

php_admin_flag display_errors on

La différence entre les instructions avec et sans le mot clé "admin" réside dans le fait que celles avec ne peuvent pas être modifiées depuis un .htaccess, ni avec la fonction ini_set.

Grâce à ce système, vous allez pouvoir personnaliser la configuration PHP de vos virtual hosts.