FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
- À quoi sert le fichier php.ini ?
- Où trouver le fichier php.ini ?
- Comment savoir si le fichier php.ini a été pris en compte ?
- Comment modifier la valeur d'une option de configuration ?
- Comment interdire certaines fonctions PHP ?
- Comment désactiver certaines classes ?
- Qu'est-ce que le Safe Mode ?
- Comment changer le temps limite d'exécution de mes scripts ?
- Comment connaître la valeur d'une option de configuration du php.ini ?
- Comment connaître la version de PHP et les modules chargés ?
- Comment connaître les fonctions disponibles chez votre hébergeur ?
- Comment exécuter un script PHP à chaque début/fin de chargement de fichier ?
- Comment définir le répertoire qui contient les fichiers à inclure ?
Le fichier php.ini permet de configurer toute une palette de paramètres du langage PHP, c'est un fichier au format texte et par défaut, il se trouve dans le dossier des sources de PHP. Entre autres choses, il est possible d'y activer les modules d'extension de PHP. Les modules d'extension sont des jeux d'instructions qui permettent de manipuler un type de données.
Il existe par exemple un module d'extension PDF pour la manipulation des fichiers Adobe Acrobat, tandis que le module GD permet de créer des images. Certains modules d'extension sont inclus dans le pack de base de PHP mais peuvent être désactivés (par exemple les modules des bases de données MySQL, PostgreSQL ou ODBC).
Il est rédigé selon la syntaxe habituelle des fichiers php.ini, et les valeurs qu'il contient dépend de votre environnement. Par exemple, pour votre machine de développement, vous devriez affiher les erreurs tandis que pour la machine de production, il est préférable de les occulter.
Cette information figure dans les tableaux générés par la fonction phpinfo(). Recherchez-y une ligne Configuration File (php.ini) Path pour en obtenir le chemin.
Pour ceux qui installent PHP à partir des sources, il s'agira par défaut du répertoire $PREFIX/lib/ où $PREFIX correspond à la valeur de l'option --prefix lors de la configuration. S'il est omis, le préfixe prendra la valeur /usr/local/ (le chemin complet du fichier php.ini sera alors /usr/local/lib/php.ini). Il est possible de spécifier un tout autre chemin à l'aide de l'option --with-config-file=/etc où le fichier sera ici cherché dans le répertoire /etc/. Le fichier php.ini doit être créé à partir d'un des deux fichiers php.ini-dist ou php.ini-recommended que vous trouverez à la racine des sources de PHP.
Aux utilisateurs de la solution tout en un EasyPHP : vous devez modifier le fichier php.ini situé dans le répertoire conf_files car ce logiciel détecte les modifications apportées sur le fichier de configuration de PHP et va ensuite écraser la configuration précédente. D'autre part, vous pouvez utiliser dans les fichiers de ce répertoire des variables comme ${path}, qui sera remplacée par le chemin complet de la racine d'EasyPHP.
Si PHP est intégré à Apache sous la forme d'un module, vous devrez redémarrer Apache après chaque modification du fichier php.ini (inutile dans le cas d'une utilisation CGI puisqu'il est relu à chaque requête).
Lien : Comment savoir si le fichier php.ini a été pris en compte ?
Parmi les tableaux affichés par la fonction phpinfo(), cherchez la ligne intitulée Configuration File (php.ini) Path. Si le nom du fichier php.ini apparaît, cela signifie que le fichier a été chargé. À l'inverse, si seul un répertoire apparaît, c'est qu'il n'y a aucun fichier php.ini à cet endroit.
Soit en éditant le fichier php.ini soit au cours du script avec la fonction ini_set($var, $val).
Cette fonction permet de changer la valeur d'une option de configuration du php.ini pour la seule durée du script en cours d'exécution. Elle change l'option $var pour lui donner la valeur $val. Elle retourne FALSE en cas d'échec, ou l'ancienne valeur en cas de réussite.
Exemple :
Cet exemple permet de modifier le temps maximum autorisé d'exécution du script.
Au contraire, la fonction ini_restore($var) permet de restaurer la valeur de la variable $var par celle définie dans le fichier php.ini. Elle permet donc d'annuler les modifications effectuées sur l'option $var par la fonction ini_set().
Le fichier de configuration php.ini permet d'interdire l'utilisation de certaines fonctions dans les scripts PHP pour des raisons de sécurité (par exemple, interdire l'utilisation de system(), exec(), et autres...).
; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
disable_functions =
Cette directive de configuration prend pour valeur une chaîne de caractères délimitée par des doubles quotes. Cette chaîne est composée de la liste des fonctions à interdire, séparées par une virgule.
Exemple :
disable_functions = "system, exec, phpinfo"
Cette directive n'est pas inactivée par le safe mode.
Le fichier de configuration php.ini permet d'interdire l'utilisation de certaines classes dans les scripts PHP pour des raisons de sécurité.
disable_classes =
Cette directive de configuration prend pour valeur une chaîne de caractères délimitée par des doubles quotes. Cette chaîne est composée de la liste des classes à interdire, séparées par une virgule.
Exemple :
disable_classes = "SQL_user"
Cette directive n'est pas inactivée par le safe mode.
Par défaut, PHP offre parfois trop de possibilités aux scripts et cela peut poser des problèmes de sécurité. Le SAFE MODE est là pour répondre en partie à ces problèmes en limitant certaines possibilités de PHP. Dans le cas d'un hébergement mutualisé, le SAFE MODE est souvent activé.
Note : on ne parle pas ici de faille de sécurité de PHP mais de possibilité qu'offre PHP et dont l"utilisation peut poser des problèmes. Exemple : avec la SAFE MODE activé, il est impossible à un développeur de créer un script PHP qui supprimerait des fichiers autres que les siens sur le serveur.
PHP limite la durée d'exécution des scripts. Ceci pour des raisons de sécurité et de performance. En effet, un script fou qui contiendrait une boucle infinie due à une erreur de programmation consommerait énormément de ressources. Or les hébergeurs ne peuvent se permettre de compromettre les performances de leurs serveurs, ainsi ils limitent cette durée d'exécution.
En cas de dépassement de cette durée limite, il survient cette erreur :
Fatal error: Maximum execution time exceeded in your script on line 16
Mais si le traitement d'un script exige de dépasser cette durée limite, que faire ? Il existe alors deux méthodes possibles :
- modifier la directive max_execution_time du fichier de configuration php.ini
- appeler la fonction set_time_limit($time) qui rajoute la durée $time à celle définie par max_execution_time
La valeur de cette durée est fixée par défaut à 30 secondes. L'unité est la seconde. Pour ne fixer aucune limite de temps, il faut lui donner la valeur zéro.
A noter que la fonction set_time_limit est désactivée lorsque PHP fonctionne en safe mode. Il apparaîtra alors l'erreur suivante :
Warning: Cannot set time limit in safe mode in your script on line 18
L'hébergeur gratuit Free.fr tourne en safe mode et ne donne pas accès au fichier de configuration, dans ces conditions, il n'est donc pas possible de changer la durée limite d'exécution des scripts.
La fonction ini_get($var) retourne la valeur de l'option $var.
Elle permet de connaître les valeurs définies dans les directives de configuration du fichier php.ini.
Attention, cette fonction est affectée par ini_set().
Il possible de connaître la version de PHP ainsi que les modules chargés à l'aide de la constante PHP_VERSION et de la fonction phpinfo
L'utilisation de cette fonction est très simple, il vous suffit de créer un script PHP contenant le code suivant :
phpinfo();
Sur la première ligne est affichée la version de PHP. Dans le même tableau sont affichées ensuite des informations comme le type de système d'exploitation, la commande utilisée pour compiler PHP, le type de fonctionnement de PHP (CGI ou module) et le ou les fichiers ".ini" utilisés pour la configuration de PHP.
Vient ensuite un tableau "PHP Core" qui montre les valeurs des différentes directives indiquées dans les fichiers ".ini".
Les informations des modules suivent avec un tableau pour chaque module.
À la fin se trouve le contenu des variables d'environnement ainsi que des variables "$_REQUEST", "$_GET", "$_POST", "$_COOKIE", "$_SERVER" et "$_ENV".
<?php
/*
Ce script vous permet de connaître toutes les fonctions disponibles sur votre serveur
Il vous permet également d'accéder facilement à la documentation française de cette
fonction sur le site officiel de PHP
Ce Script ne fonctionne qu'avec les versions 4.0 et supérieur de PHP
Auteurs : julp et hachesse
*/
?>
<
h2>
Liste des modules disponibles :<
/h2
>
<
ol start
="
1
"
type
="
I
"
>
<?php
$listModules
=
get_loaded_extensions();
foreach
($listModules
as
$module
){
echo '<li>Module : <b><a href="#'
.
$module
.
'">'
.
$module
.
'</a></b><br />'
;
}
?>
<
/ol
>
<
br /
><br /
>
<
h2>
Détail des fonctions par module:<
/h2
>
<
ol type
="
I
"
>
<?php
foreach
($listModules
as
$module
) {
$listFunctions
=
get_extension_funcs($module
);
sort($listFunctions
);
echo '<li id="'
.
$module
.
'">'
.
$module
.
'<ol type="1">'
;
foreach
($listFunctions
as
$function
) {
$param
=
str_replace('_'
,
'-'
,
$function
);
echo '<li><a href="http://fr.php.net/'
.
$param
.
'">'
.
$function
.
'</a></li>'
;
}
echo '</ol></li>'
;
}
?>
<
/ul
>
Il existe deux directives du fichier de configuration php.ini permettant de charger un script avant ou après le chargement d'une page. Il s'agit des variables
auto_prepend_file =
auto_append_file =
Voir un exemple d'utilisation.
La liste des répertoires utilisés par PHP pour inclure un fichier est définie par la directive "include_path".
La valeur de cette directive peut être définie dans le fichier "php.ini" ou à l'aide des fonctions "set_include_path"
ou "ini_set".
Exemple d'utilisation :
// Fonctionne depuis PHP 4.3.0
set_include_path('
.;c:/scripts
'
);
// Fonctionne sur toutes les versions
ini_set('
include_path
'
,
'
.;c:/script
'
);
Ces commandes définissent les chemins où chercher les fichiers à inclure et on peut utiliser les commandes "include" et "require" de la façon suivante :
Avec la 1re ligne, PHP va d'abord chercher le fichier "fichier.php" dans le répertoire "rep" du répertoire courant. Si le fichier n'existe pas, la recherche continue avec le fichier "c:/script/rep/fichier.php".
Avec la 2me ligne, PHP va d'abord chercher le fichier "fichier.php" dans le répertoire "repertoire2" qui se trouve un niveau au dessus du répertoire courant. Si le fichier n'existe pas, la recherche continue avec le fichier "c:/repertoire2/fichier.php".
Entre chaque répertoire, le séparateur ";" est utilisé sous Windows. Sous Linux, il faut utiliser ":". Pour faire du code qui fonctionne avec n'importe quel système d'exploitation, vous pouvez utiliser la constante PATH_SEPARATOR (Comment définir des chemins vers des fichiers qui fonctionnent avec Linux et Windows ?).
Lien : Comment définir des chemins vers des fichiers qui fonctionnent avec Linux et Windows ?