## Description des directives internes du php.ini

Cette liste inclut les directives internes du php.ini qu'il est possible de définir pour personnaliser la configuration de PHP. Les directives gérées par les extensions sont listées et détaillées dans les pages de documentation respectives des extensions ; les informations concernant les directives sur les sessions, par exemple, peuvent être trouvées sur la page de documentation des sessions.

> Note:

> Les valeurs par défaut listées ici seront utilisées lorsque php.ini n'est pas chargé ; les valeurs des fichiers php.ini en environnement de production et en environnement de développement peuvent varier.

## Options du langage

Options de configuration
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
short_open_tag | "1" | `INI_PERDIR` |
precision | "14" | `INI_ALL` |
serialize_precision | "-1" | `INI_ALL` | Antérieur à PHP 7.1.0, la valeur par défaut était 17.
disable_functions | "" | `INI_SYSTEM` uniquement |
disable_classes | "" | php.ini uniquement | Supprimé à partir de PHP 8.5.0
exit_on_timeout | "" | `INI_ALL` |
expose_php | "1" | php.ini uniquement |
hard_timeout | "2" | `INI_SYSTEM` | Disponible à partir de PHP 7.1.0.
zend.exception_ignore_args | "0" | `INI_ALL` | Disponible à partir de PHP 7.4.0
zend.multibyte | "0" | `INI_ALL` |
zend.script_encoding | NULL | `INI_ALL` |
zend.detect_unicode | NULL | `INI_ALL` |
zend.signal_check | "0" | `INI_SYSTEM` |
zend.assertions | "1" | `INI_ALL` avec des restrictions |
zend.exception_string_param_max_len | "15" | `INI_ALL` | Disponible à partir de PHP 8.0.0.

Voici un éclaircissement sur l'utilisation des directives de configuration.

`short_open_tag` bool

  Définit si les balises courtes d'ouverture de PHP (`<? ?>`) sont autorisées ou non. Pour utiliser PHP avec XML, il faut désactiver cette option de configuration pour pouvoir utiliser `<?xml ?>`. Sinon, il est possible de l'écrire à l'aide de PHP, par exemple : `<?php echo '<?xml version="1.0">'; ?>`. Si cette option est désactivée, il faut utiliser la version longue d'ouverture de balises PHP (`<?php ?>`).

  > Note:

  > Cette directive n'affecte pas l'utilisation de `<?=`, qui est toujours disponible.

`precision` int
  Le nombre de décimales significatives à afficher dans les nombres à virgule flottante. `-1` signifie que le meilleur algorithme pour arrondir ce nombre sera utilisé.
`serialize_precision` int
  Le nombre de chiffres significatifs conservés lors de la sérialisation des nombres à virgule flottante. `-1` signifie que le meilleur algorithme pour arrondir ce nombre sera utilisé.
`expose_php` bool

  Expose à tous les clients le fait que PHP est installé sur le serveur. Ceci inclut la version de PHP dans l'en-tête HTTP (par exemple, X-Powered-By: PHP/5.3.7).

`disable_functions` string
  Cette directive permet de désactiver certaines fonctions. Elle prend une liste de noms de fonctions délimitée par des virgules. À partir de PHP 8.0.0, la désactivation d'une fonction supprime sa définition, permettant à l'espace utilisateur de la redéfinir. Antérieur à PHP 8.0.0, désactiver une fonction empêchait simplement la fonction d'être invoquée. Seules les fonctions internes peuvent être désactivées en utilisant cette directive. Les fonctions définies par l'utilisateur ne sont pas affectées. Cette directive doit être définie dans le php.ini. Par exemple, il n'est pas possible de la définir dans le fichier httpd.conf.
  Avertissement

  Cette directive peut être contournée et ne devrait pas être considérée comme une mesure de sécurité suffisante pour les environnements d'hébergement mutualisé.

`disable_classes` string
  Cette directive permet de désactiver certaines classes. Elle prend en compte une liste de noms de classes délimitée par des virgules. La désactivation d'une classe empêche simplement son instanciation. Seules les classes internes peuvent être désactivées en utilisant cette directive. Les classes définies par l'utilisateur ne sont pas affectées. Cette directive doit être définie dans le php.ini. Par exemple, il n'est pas possible de la définir dans le fichier httpd.conf.
  Avertissement

  Cette directive peut être contournée et ne devrait pas être considérée comme une mesure de sécurité suffisante pour les environnements d'hébergement mutualisé.

  Avertissement

  Cette fonctionnalité a été SUPPRIMÉE à partir de PHP 8.5.0.

`zend.assertions` int
  Lorsque défini à `1`, le code d'assertion sera généré (en mode développement). Lorsque défini à `0`, le code d'assertion sera généré, mais sera ignoré (il ne sera pas exécuté) pendant l'exécution. Lorsque défini à `-1`, le code d'assertion ne sera pas généré, rendant ainsi les assertions totalement neutres (en mode production).

  > Note:

  > Si un processus est démarré en mode production, zend.assertions ne peut être changé en cours d'exécution, sachant que le code pour les assertions n'a pas été généré.

  > Si un processus est démarré en mode développement, zend.assertions ne peut être défini à `-1` en cours d'exécution.

`zend.exception_string_param_max_len` int
  La longueur maximale des arguments de type chaîne des fonctions dans les traces de pile converties en chaîne. Doit être dans l'intervalle entre `"0"` et `"1000000"`.
`hard_timeout` int

  Quand le timeout défini dans max_execution_time est atteint, le runtime PHP détruira les ressources gracieusement. Si quelque chose se coince quand ceci se produit, le hard timeout se déclenchera pour le nombre de secondes défini. Quand le hard timeout est atteint, PHP quittera de manière non gracieuse. Quand défini à 0, le hard timeout ne s'activera jamais.

  Quand PHP termine d'un hard timeout, ça ressemblera à quelque chose du genre :

      Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0

`zend.exception_ignore_args` bool

  Exclut les arguments dans les traces de pile générées à partir des exceptions.

`zend.multibyte` bool

  Active l'analyse lexicale des fichiers PHP dans des encodages multioctets. L'activation de zend.multibyte est nécessaire pour utiliser certains encodages de caractères comme SJIS, BIG5, etc. qui contiennent des caractères spéciaux en encodage multioctets. Les encodages compatibles avec ISO-8859-1 comme UTF-8, EUC, etc. ne nécessitent pas cette option.

  Activer zend.multibyte requiert l'extension mbstring.

`zend.script_encoding` string

  Cette valeur sera utilisée à moins qu'une directive declare(encoding=...) n'apparaisse en haut du script. Lorsqu'un encodage incompatible ISO-8859-1 est utilisé, les options zend.multibyte et zend.script_encoding doivent être utilisées.

  Les chaînes de caractères seront converties depuis zend.script_encoding vers mbstring.internal_encoding, comme si mb_convert_encoding() avait été appelé.

`zend.detect_unicode` bool

  Vérifie le `BOM (Byte Order Mark)` et regarde si le fichier contient des caractères multioctets valides. Cette détection est effectuée avant le lancement de la fonction __halt_compiler(). Disponible uniquement en mode Zend multioctets.

`zend.signal_check` bool

  Vérifie si un gestionnaire de signaux de remplacement est utilisé lors de l'arrêt.

`exit_on_timeout` bool

  Ceci est une directive Apache1 mod_php uniquement, qui force les fils Apache à sortir si une expiration de délai d'exécution PHP survient. Une telle expiration de délai produit en interne un appel à longjmp() en Apache1 qui peut quitter certaines extensions dans un statut non consistant. En terminant le processus, tous les verrous et la mémoire seront nettoyés.

## Limite des ressources

Options de configuration
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
memory_limit | "128M" | `INI_ALL` |

Voici un éclaircissement sur l'utilisation des directives de configuration.

`memory_limit` int

  Cette option détermine la mémoire limite, en octets, qu'un script est autorisé à allouer. Cela permet de prévenir l'utilisation de toute la mémoire par un script mal codé. Il est à noter que pour n'avoir aucune limite, il faut définir cette directive à `-1`.

  Lorsqu'un entier est utilisé, sa valeur est mesurée en octets. Vous pouvez également utiliser la notation sténographique comme décrit dans cette entrée de la FAQ..

Voir aussi : max_execution_time.

## Réglage de Performance

Réglage de Performance
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
realpath_cache_size | "4M" | `INI_SYSTEM` | Antérieur à PHP 7.0.16 et 7.1.2, la valeur par défaut était `"16K"`
realpath_cache_ttl | "120" | `INI_SYSTEM` |

> Note:

> Utiliser open_basedir désactivera le cache realpath.

Voici un éclaircissement sur l'utilisation des directives de configuration.

`realpath_cache_size` int

  Détermine la taille du cache de realpath qui sera utilisée par PHP. Cette valeur devrait être augmentée sur les systèmes où PHP ouvre plusieurs fichiers, pour refléter la quantité d'opérations exécutées sur les fichiers.

  La taille représente le nombre total d'octets dans la chaîne stockée du chemin, plus la taille des données associées avec l'entrée du cache. Cela signifie que pour stocker de grands chemins dans le cache, la taille du cache doit être suffisamment grande. Cette valeur ne contrôle pas directement le nombre de chemins distincts qui peuvent être mis en cache.

  La taille nécessaire pour les données de l'entrée du cache est dépendante du système.

`realpath_cache_ttl` int

  Temps (en secondes) pour lequel persiste l'information du cache de realpath pour un fichier ou un répertoire donné. Pour des systèmes avec des fichiers qui changent peu souvent, il est recommandé d'augmenter cette valeur.

## Gestion des données

Options de configuration
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
arg_separator.output | "&" | `INI_ALL` |
arg_separator.input | "&" | `INI_PERDIR` |
variables_order | "EGPCS" | `INI_PERDIR` |
request_order | "" | `INI_PERDIR` |
auto_globals_jit | "1" | `INI_PERDIR` |
register_argc_argv | "1" | `INI_PERDIR` | Obsolète à partir de PHP 8.5.0
enable_post_data_reading | "1" | `INI_PERDIR` |
post_max_size | "8M" | `INI_PERDIR` |
auto_prepend_file | NULL | `INI_PERDIR` |
auto_append_file | NULL | `INI_PERDIR` |
default_mimetype | "text/html" | `INI_ALL` |
default_charset | "UTF-8" | `INI_ALL` |
input_encoding | "" | `INI_ALL` |
output_encoding | "" | `INI_ALL` |
internal_encoding | "" | `INI_ALL` |

Voici un éclaircissement sur l'utilisation des directives de configuration.

`arg_separator.output` string

  Le séparateur utilisé lorsque PHP génère les URL pour séparer les arguments.

`arg_separator.input` string

  Liste des séparateurs utilisés par PHP pour analyser les URL entrantes et en déduire les valeurs.

  > Note:

  > Chaque caractère de cette directive est considéré comme étant un séparateur !

`variables_order` string

  Définit l'ordre d'analyse des variables EGPCS (`E`nvironment, `G`et, `P`ost, `C`ookie, et `S`erver). Par exemple, si variables_order est défini à `"SP"` alors PHP créera superglobals $_SERVER et $_POST, mais ne créera pas $_ENV, $_GET, et $_COOKIE. Le fait de définir cet ordre à "" signifie qu'aucune superglobals ne sera définie.

  Avertissement

  En SAPIs CGI et FastCGI, $_SERVER est également peuplé de valeurs de l'environnement ; `S` est toujours équivalent à `ES` au regard de la position de `E` ailleurs dans cette directive.

  > Note:

  > Le contenu et l'ordre de $_REQUEST sont également affectés par cette directive.

`request_order` string

  Cette directive décrit l'ordre dans lequel PHP place les variables GET, POST et Cookie dans le tableau _REQUEST. Le placement s'effectue de la gauche vers la droite, les valeurs les plus récentes écrasant les valeurs plus anciennes.

  Si cette directive n'est pas définie, variables_order est utilisé pour le contenu de $_REQUEST.

  Il est à noter que les fichiers php.ini de la distribution par défaut ne contiennent pas `'C'` pour les cookies, ceci pour des raisons de sécurité.

`auto_globals_jit` bool

  Quand cette directive est activée, les variables SERVER, REQUEST et ENV sont créées lorsqu'elles sont utilisées : seulement si nécessaire. Si ces variables ne sont pas utilisées dans un script, le script verra un gain de performances.

  Avertissement

  L'utilisation des variables SERVER, REQUEST et ENV est vérifiée lors de la compilation. Ainsi, les utiliser avec, par exemple, des variables dynamiques ne provoquera pas leur initialisation.

`register_argc_argv` bool
  Dit à PHP s'il doit déclarer ou non les variables argv et argc (qui contiendront les informations GET). Voir aussi les lignes de commande.
  Avertissement

  Cette fonctionnalité est OBSOLÈTE à partir de PHP 8.5.0. Dépendre de cette fonctionnalité est fortement déconseillé.

  > Note: Le fait de dériver `$_SERVER['argc']` et `$_SERVER['argv']` depuis la query string pour les SAPI non-CLI est obsolète. Configurer `register_argc_argv=0` et utiliser à la place soit $_GET soit `$_SERVER['QUERY_STRING']` pour accéder à l'information, après avoir vérifié que l'usage est sûr.

`enable_post_data_reading` bool
  Le fait de désactiver cette option fera que les variables $_POST et $_FILES ne seront pas peuplées. Le corps de la requête reste non consommé dans php://input et peut être lu manuellement ou analysé via request_parse_body(). Ceci peut être intéressant pour les requêtes via un proxy ou pour analyser les données transmises directement en mémoire.
`post_max_size` int
  Définit la taille maximale des données reçues par la méthode POST. Cette option affecte également les fichiers chargés. Pour charger de gros fichiers, cette valeur doit être plus grande que la valeur de upload_max_filesize. De façon générale, memory_limit doit être plus grand que `post_max_size`. Lorsqu'un entier est utilisé, sa valeur est mesurée en octets. Vous pouvez également utiliser la notation sténographique comme décrit dans cette entrée de la FAQ.. Dans le cas où la taille des données reçues par la méthode POST est plus grande que `post_max_size`, les superglobales $_POST et $_FILES seront vides. Ceci peut être surveillé de différentes façons, par exemple, en passant une variable $_GET au script qui traite les données, c.-à-d. `<form action="edit.php?processed=1">`, et ainsi vérifier si $_GET['processed'] est défini.

  > Note:

  > PHP autorise des mots-clés pour les octets, incluant K (kilo), M (méga) et G (giga). PHP effectue la conversion automatiquement lors de leur utilisation. Il faut être attentif à ne pas dépasser la limite d'un entier signé sur 32 bits (avec les versions 32 bits), auquel cas le script échouera.

  Historique pour `post_max_size`
  Version | Description
  --- | ---
  5.3.4 | `post_max_size` = 0 ne va pas désactiver la limite lorsque le type de contenu est application/x-www-form-urlencoded ou s'il n'est pas enregistré avec PHP.
  5.3.2 , 5.2.12 | Permet une taille d'envoi illimitée en définissant `post_max_size` à 0.

`auto_prepend_file` string

  Spécifie le nom d'un fichier qui sera automatiquement parcouru avant le fichier principal. Ce fichier est inclus comme s'il l'avait été avec la fonction require, donc include_path est utilisé.

  La valeur spéciale `none` désactive l'ajout automatique.

`auto_append_file` string

  Spécifie le nom du fichier qui sera automatiquement parcouru après le fichier principal. Ce fichier est inclus comme s'il l'avait été avec la fonction require, donc include_path est utilisé.

  La valeur spéciale `none` désactive l'ajout automatique.

  > Note: Si le script se termine par la fonction exit(), l'ajout automatique ne se fera pas.

`default_mimetype` string

  Par défaut, PHP va envoyer le type de média en utilisant l'en-tête Content-Type. Pour désactiver ceci, il faut laisser vide cette valeur.

  Le type de média défini par défaut dans PHP est text/html.

`default_charset` string

  "UTF-8" est la valeur par défaut et celle-ci est utilisée comme jeu de caractères par défaut pour les fonctions et modules. PHP enverra toujours un jeu de caractères par défaut pour htmlentities(), html_entity_decode() et htmlspecialchars() si le paramètre `encoding` est omis. La valeur de `default_charset` sera également utilisée pour définir le jeu de caractères par défaut pour les fonctions iconv si les options de configuration `iconv.input_encoding`, `iconv.output_encoding` et `iconv.internal_encoding` ne sont pas définies, et pour les fonctions mbstring si les options de configuration `mbstring.http_input`, `mbstring.http_output` et `mbstring.internal_encoding` ne sont pas définies.

  Toutes les versions de PHP vont utiliser cette valeur comme jeu de caractères par défaut dans l'en-tête par défaut Content-Type envoyé par PHP si l'en-tête n'est pas écrasé via un appel à la fonction header().

  Définir un `default_charset` à une valeur vide n'est pas recommandé.

`input_encoding` string

  Ce paramètre est utilisé pour les modules multioctets tels que mbstring et iconv. Vide par défaut.

`output_encoding` string

  Ce paramètre est utilisé pour les modules multioctets tels que mbstring et iconv. Vide par défaut.

`internal_encoding` string

  Ce paramètre est utilisé pour les modules multioctets tels que mbstring et iconv. Vide par défaut. Si vide alors, default_charset est utilisé.

## Chemins et répertoires

Options de configuration
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
include_path | ".;/chemin/vers/php/pear" | `INI_ALL` |
open_basedir | NULL | `INI_ALL` |
doc_root | NULL | `INI_SYSTEM` |
user_dir | NULL | `INI_SYSTEM` |
user_ini.cache_ttl | "300" | `INI_SYSTEM` |
user_ini.filename | ".user.ini" | `INI_SYSTEM` |
extension_dir | "/chemin/vers/php" | `INI_SYSTEM` |
extension | NULL | php.ini uniquement |
zend_extension | NULL | php.ini uniquement |
cgi.check_shebang_line | "1" | `INI_SYSTEM` |
cgi.discard_path | "0" | `INI_SYSTEM` |
cgi.fix_pathinfo | "1" | `INI_SYSTEM` |
cgi.force_redirect | "1" | `INI_SYSTEM` |
cgi.nph | "0" | `INI_SYSTEM` |
cgi.redirect_status_env | NULL | `INI_SYSTEM` |
cgi.rfc2616_headers | "0" | `INI_ALL` |
fastcgi.impersonate | "0" | `INI_SYSTEM` |
fastcgi.logging | "1" | `INI_SYSTEM` |

Voici un éclaircissement sur l'utilisation des directives de configuration.

`include_path` string

  Spécifie une liste de répertoires où les fonctions require, include, fopen(), file(), readfile() et file_get_contents() chercheront les fichiers. Le format est identique à la variable d'environnement système PATH : une liste de répertoires séparés par deux points (`:`) sous Unix ou par un point-virgule (`;`) sous Windows.

  PHP considère chaque entrée du chemin d'inclusion séparément lors de la recherche des fichiers à inclure. Il va vérifier le premier chemin, et s'il ne trouve pas le fichier, il va vérifier le chemin suivant, jusqu'à ce qu'il trouve le fichier à inclure ou bien retourner une alerte de type `E_WARNING` ou de type `E_ERROR`. Il est possible de modifier le chemin d'inclusion à l'exécution en utilisant la fonction set_include_path().

  Exemple #1 include_path sous Unix

      include_path=".:/php/includes"

  Exemple #2 include_path sous Windows

      include_path=".;c:\php\includes"

  L'utilisation d'un point (`.`) dans le chemin d'inclusion permet de faire des inclusions relatives au répertoire courant. Cependant, il est plus efficace d'inclure explicitement un fichier avec `include './file'`, que de demander à PHP de vérifier le dossier courant à chaque inclusion.

  > Note:

  > Les variables `ENV` sont aussi disponibles dans les fichiers .ini. Aussi, il est possible de faire référence au dossier home en utilisant la syntaxe `${LOGIN}` et `${USER}`.

  > Les variables d'environnement peuvent varier suivant les APIs Serveur, tout comme elles peuvent varier suivant les environnements.

  Exemple #3 include_path sous Unix en utilisant la variable d'environnement ${USER}

      include_path = ".:${USER}/pear/php"

`open_basedir` string

  Limite les fichiers pouvant être accédés par PHP à une arborescence de répertoires spécifique, incluant le fichier lui-même.

  Lorsqu'un script tente d'accéder à un fichier avec, par exemple, la fonction include ou la fonction fopen(), le chemin vers le fichier est analysé. Lorsque le fichier se trouve à l'extérieur de l'arborescence de répertoires spécifiée, PHP refusera d'y accéder. Tous les liens symboliques sont résolus, aussi, il n'est pas possible d'outrepasser cette restriction avec un lien symbolique. Si le fichier n'existe pas, alors le lien symbolique ne pourra être résolu et le nom du fichier est comparé avec l'open_basedir.

  L'option open_basedir peut affecter plus que les fonctions du système de fichiers ; par exemple, si `MySQL` est configuré pour utiliser le driver `mysqlnd`, `LOAD DATA INFILE` sera affecté par l'option open_basedir. La plupart des extensions de PHP utilisent l'option `open_basedir` de cette façon.

  La valeur spéciale `.` indique que le dossier courant du script sera utilisé comme dossier de base. Ceci est cependant légèrement dangereux dans le sens où le dossier courant peut être facilement changé grâce à la fonction chdir().

  Dans le fichier httpd.conf, open_basedir peut être désactivée (c.-à-d. pour certains hôtes virtuels) de la même façon que n'importe quelle directive de configuration avec "`php_admin_value open_basedir none`".

  Sous Windows, séparez les dossiers avec un point-virgule. Sous tous les autres systèmes, séparez les dossiers avec des deux-points. Lors de l'utilisation d'Apache en module, les chemins de l'open_basedir depuis les dossiers parents sont maintenant automatiquement hérités.

  La restriction spécifiée avec l'open_basedir est un nom de dossier, et non pas un préfixe.

  Par défaut, tous les fichiers peuvent être ouverts.

  > Note: open_basedir peut être affinée au moment de l'exécution. Ceci signifie que si open_basedir est définie à `/www/` dans le fichier php.ini, un script peut affiner la configuration en `/www/tmp/` au moment de l'exécution en utilisant la fonction ini_set(). Lors d'un parcours de plusieurs dossiers, il est possible d'utiliser la constante `PATH_SEPARATOR` suivant le système d'exploitation. À partir de PHP 8.3.0, open_basedir n'accepte plus les chemins contenant le répertoire parent (`..`) lorsqu'il est défini à l'exécution.

  > Note:

  > Utiliser open_basedir définira realpath_cache_size à `0` et ainsi désactive le cache realpath.

  Attention

  `open_basedir` est juste une mesure de protection supplémentaire, et n'est en aucun cas exhaustive, et on ne peut donc pas s'y fier lorsque la sécurité est nécessaire.

`doc_root` string

  Le dossier racine de PHP sur le serveur. Uniquement utilisé si non vide. Si PHP n'a pas été compilé avec FORCE_REDIRECT, il devrait définir le doc_root lors de l'utilisation de PHP en tant que CGI sous n'importe quel serveur web (autre que IIS). Alternativement, il est possible d'utiliser la configuration cgi.force_redirect.

`user_ini.cache_ttl` int

`user_ini.filename` string

`user_dir` string

  Le nom de base du répertoire utilisé dans un répertoire utilisateur pour les fichiers PHP, par exemple, public_html.

`extension_dir` string

  Spécifie le répertoire dans lequel PHP doit chercher des extensions externes à charger. Il est recommandé de spécifier un chemin absolu. Voir aussi enable_dl et dl().

`extension` string

  Quelles extensions doivent être chargées dynamiquement lors du démarrage de PHP.

`zend_extension` string

  Nom de l'extension Zend chargeable dynamiquement (par exemple XDebug) à charger lors du démarrage de PHP.

`cgi.check_shebang_line` bool

  Contrôle si PHP CGI vérifie la ligne commençant par `#!` (shebang) en haut du script exécuté. Cette ligne est nécessaire si le script est destiné à être exécuté en mode autonome et via un PHP CGI. PHP en mode CGI ne lit pas cette ligne et ignore son contenu si cette directive est active.

`cgi.discard_path` bool

  Si activé, le binaire PHP CGI peut être placé en dehors de l'arbre web en toute sécurité et les personnes ne seront pas capables de contourner la sécurité .htaccess.

`cgi.fix_pathinfo` bool

  Fournit un réel `PATH_INFO`/ `PATH_TRANSLATED` pour CGI. Le comportement précédent de PHP était de définir `PATH_TRANSLATED` en `SCRIPT_FILENAME` et de ne pas remplir `PATH_INFO`. Pour plus d'informations sur `PATH_INFO`, consulter les spécificités CGI. Si définie à `1`, PHP CGI fixera ce chemin suivant les spécifications. Si définie à `0`, PHP appliquera l'ancien comportement. Par défaut, cette directive est activée. Il est recommandé de modifier les scripts pour utiliser `SCRIPT_FILENAME` à la place de `PATH_TRANSLATED`.

`cgi.force_redirect` bool

  cgi.force_redirect est nécessaire pour des raisons de sécurité lors de l'utilisation de PHP en mode CGI sous la plupart des serveurs web. Sans définition explicite, PHP l'activera automatiquement par défaut. Il est possible de la désactiver à ses risques et périls.

  > Note:

  > Utilisateurs de Windows : Lors de l'utilisation de IIS, cette option doit être désactivée ; pareil pour OmniHTTPD et Xitami.

`cgi.nph` bool

  Si cgi.nph est activé, il forcera CGI à toujours envoyer le Status: 200 avec chaque requête.

`cgi.redirect_status_env` string

  Si cgi.force_redirect est activé et que le serveur web n'est pas Apache ou Netscape (iPlanet), il est recommandé de définir un nom de variable d'environnement que PHP utilisera pour voir si tout est correct pour continuer l'exécution.

  > Note:

  > La définition de cette variable peut avoir des conséquences sur la sécurité. Il faut savoir ce que l'on fait avant de procéder ainsi.

`cgi.rfc2616_headers` bool

  Dit à PHP quel type d'en-tête doit être utilisé lors de l'envoi du code réponse HTTP. S'il est désactivé, PHP enverra un en-tête "Status:" (» RFC 3875) qui est supporté par Apache et les autres serveurs web. Lorsqu'il est activé, PHP enverra un en-tête répondant à la spécification de la » RFC 2616.

  Si cette option est activée et que PHP est exécuté en environnement CGI (par exemple, PHP-FPM), il ne faut pas utiliser les en-têtes de réponse HTTP "status" RFC 2616, mais plutôt utiliser l'équivalent RFC 3875, c.-à-d. au lieu de l'en-tête ("HTTP/1.0 404 Not found"), utiliser ("Status: 404 Not Found").

  Il est recommandé de laisser ce paramètre désactivé, sauf en cas de parfaite connaissance de ses implications.

`fastcgi.impersonate` bool

  FastCGI sous IIS (sur les systèmes d'exploitation basés sur WINNT) supporte la possibilité d'emprunter l'identité du jeton de sécurité du client appelant. Cela permet à IIS de définir le contexte de sécurité sur lequel la requête est exécutée. mod_fastcgi sous Apache ne supporte actuellement pas cette fonctionnalité (03/17/2002). Activer si exécuté sous IIS. Par défaut, c'est désactivé.

`fastcgi.logging` bool

  Active la journalisation SAPI avec FastCGI. Activé par défaut.

## Chargement de fichiers

Options de configuration
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
file_uploads | "1" | `INI_SYSTEM` |
upload_tmp_dir | NULL | `INI_SYSTEM` |
max_input_nesting_level | 64 | `INI_PERDIR` |
max_input_vars | 1000 | `INI_PERDIR` |
upload_max_filesize | "2M" | `INI_PERDIR` |
max_file_uploads | 20 | `INI_PERDIR` |

Voici un éclaircissement sur l'utilisation des directives de configuration.

`file_uploads` bool

  Autorise ou non le chargement de fichiers par HTTP. Voir aussi les directives upload_max_filesize, upload_tmp_dir et post_max_size.

`upload_tmp_dir` string

  Le répertoire temporaire utilisé pour stocker les fichiers lors du chargement. L'utilisateur sous lequel fonctionne PHP doit avoir les droits en écriture sur ce répertoire. Si non spécifié, PHP utilisera celui par défaut du système.

  Si le dossier renseigné ici n'est pas accessible en écriture, PHP se rabat alors sur le dossier temporaire par défaut du système. Si open_basedir est activé, alors le dossier temporaire par défaut du système doit être autorisé pour que le chargement des fichiers puisse fonctionner.

`upload_max_filesize` int

  La taille maximale en octets d'un fichier téléversé.

  post_max_size doit être plus large que cette valeur.

  Lorsqu'un entier est utilisé, sa valeur est mesurée en octets. Vous pouvez également utiliser la notation sténographique comme décrit dans cette entrée de la FAQ..
`max_file_uploads` int

  Le nombre maximum de fichiers pouvant être envoyés simultanément. Les champs de téléversement laissés vides lors de la soumission ne comptent plus dans le calcul de cette limite.

## SQL général

Options de configuration
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
sql.safe_mode | "0" | `INI_SYSTEM` | Supprimé à partir de PHP 7.2.0

Voici un éclaircissement sur l'utilisation des directives de configuration.

`sql.safe_mode` bool

  Si activé, les fonctions de connexion à la base de données qui spécifient des valeurs par défaut utiliseront ces valeurs au lieu des arguments fournis. Pour les valeurs par défaut, se reporter à la documentation des fonctions de connexion pour la base de données concernée.

  Avertissement

  Cette fonctionnalité a été SUPPRIMÉE à partir de PHP 7.2.0.

## Spécifique à Windows

Options de configuration spécifiques à Windows
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
windows.show_crt_warning | "0" | `INI_ALL` |

Voici un éclaircissement sur l'utilisation des directives de configuration.

`windows.show_crt_warning` bool

  Cette directive affiche les avertissements CRT de Windows lorsqu'elle est activée.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open