La configuration de PHP peut être modifiée de 3 manières :
La configuration de l’interpréteur PHP se réalise au moyen du fichier php.ini.
Globalement, un tel fichier peut être comparé au fichier httpd.conf du serveur Apache: c’est un fichier texte, afin des possibilités de commenter des lignes, à chaque directive est associé une valeur… Mais il y a des petites variantes: le caractère de commentaire est « ; » et non « # ». La valeur d’une directive est donnée par le caractère « = » et non pas par un espace blanc.
La modification du php.ini n’entraîne pas immédiatement la prise en compte de cette modif: il faudra redémarrer le serveur web pour que la modification soit prise en compte.
Comme nous l’avons déjà dit, PHP est fourni avec des modèles pré-remplis de fichier php.ini (à l’instar d’Apache): les fichiers php.ini-dist et php.ini-recommended peuvent être renommés en php.ini et être utilisés directement. Il est conseillé d’utiliser le php.ini-recommended.
Remarque : PHP recherche un fichier php.ini dans les endroits suivants, et dans cet ordre :
Pour plus de sécurité voir phpinfo()
Un des atouts de PHP est de pouvoir gérer dynamiquement des modules additionnels. Par exemple, la connectivité à une base de données comme MySQL ou Oracle, ou encore la manipulation d’images.
On peut gérer les modules de manière statique, en les compilant dans le package PHP. Mais, dans une distribution binaire, on utilisera plutôt la gestion dynamique des modules. Les modules dynamiques sont alors des librairies (fichier .dll sous Windows, ou .so sous Unix) qui sont placées dans le répertoire d’extensions de php. Le nom de ce répertoire est donné par la directive extension_dir.
Pour inclure un module dynamiquement, on utilisera la directive extension. En général, il suffira de décommenter la ligne correspondante dans le fichier php.ini.
Ceci est un extrait d’un fichier php.ini. Les extensions extension_dir et extension sont utilisées.
On voit que certaines lignes sont « décommentées ». Les modules mbstring, gd2 et mysql sont ainsi activés dynamiquement.
; Windows Extensions
; Unix Extension
; ; Note: packaged extension modules are now loaded via the .ini files ; found in the directory /etc/php.d; these are loaded by default. ;
Remarque : toutes les options de php.ini ne peuvent pas être modifiées
<?php
echo '1. La valeur de la directive de config max_execution_time est ' . ini_get('max_execution_time').'<br />';
ini_set('max_execution_time', 45);
echo '2. La valeur de la directive de config max_execution_time est ' . ini_get('max_execution_time').'<br />';
ini_restore('max_execution_time');
echo '3. La valeur de la directive de config max_execution_time est ' . ini_get('max_execution_time').'<br />';
PHP doit être configuré comme module
Permet de définir une config spécifique pour un répertoire ou pour un hôte virtuel
Deux directives :
- php_flag : modifie une directive de config « binaire » (// php_admin_flag)
- php_value : modifie une directive de config textuelle (// php_admin_value)
Les directives php_flag et php_value permettent de modifier les valeurs des directives de configuration PHP depuis le fichier de configuration Apache.
Quant aux directives php_admin_flag et php_admin_value, elle sont utilisées pour toutes les configurations relatives à la sécurité; ces deux dernières directives ne peut pas être spécifiées dans des fichiers .htaccess (fichier de surcharge de configuration Apache).
...
Listen 80
Listen 8080
NameVirtualHost 127.0.0.1:80
NameVirtualHost 127.0.0.1:8080
<VirtualHost 127.0.0.1:80>
ServerName www.example80.com
DocumentRoot "C:/Program Files/Apache Group/Apache2/domain-80“
php_value include_path ".:/usr/local/lib/php"
php_admin_flag engine on
</VirtualHost>
<VirtualHost 127.0.0.1:8080>
ServerName www.example8080.com
DocumentRoot "C:/Program Files/Apache Group/Apache2/domain-8080“
php_admin_flag safe_mode off
</VirtualHost>
...