## Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Options de configuration pour la gestion d'erreurs
Nom | Défaut | Modifiable | Historique
--- | --- | --- | ---
error_reporting | NULL | `INI_ALL` |
fatal_error_backtraces | "1" | `INI_ALL` | Disponible à partir de PHP 8.5.0
display_errors | "1" | `INI_ALL` |
display_startup_errors | "1" | `INI_ALL` | Antérieur à PHP 8.0.0, la valeur par défaut était `"0"`.
log_errors | "0" | `INI_ALL` |
log_errors_max_len | "1024" | `INI_ALL` | Sans effet à partir de PHP 8.0.0, supprimé à partir de PHP 8.1.0.
ignore_repeated_errors | "0" | `INI_ALL` |
ignore_repeated_source | "0" | `INI_ALL` |
report_memleaks | "1" | `INI_ALL` | Obsolète à partir de PHP 8.5.0
track_errors | "0" | `INI_ALL` | Obsolète à partir de PHP 7.2.0, supprimée à partir de PHP 8.0.0.
html_errors | "1" | `INI_ALL` |
xmlrpc_errors | "0" | `INI_SYSTEM` |
xmlrpc_error_number | "0" | `INI_ALL` |
docref_root | "" | `INI_ALL` |
docref_ext | "" | `INI_ALL` |
error_prepend_string | NULL | `INI_ALL` |
error_append_string | NULL | `INI_ALL` |
error_log | NULL | `INI_ALL` |
error_log_mode | 0o644 | `INI_ALL` | Disponible à partir de PHP 8.2.0.
syslog.facility | "LOG_USER" | `INI_SYSTEM` | Disponible à partir de PHP 7.3.0.
syslog.filter | "no-ctrl" | `INI_ALL` | Disponible à partir de PHP 7.3.0.
syslog.ident | "php" | `INI_SYSTEM` | Disponible à partir de PHP 7.3.0.

Pour plus de détails sur les modes INI_*, reportez-vous à Où une directive de configuration peut être modifiée.

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

`error_reporting` int

  Fixe le niveau d'erreur. Ce paramètre est un entier, représentant un champ de bits. Ajouter les valeurs suivantes pour choisir le niveau que l'on désire, telles que décrites dans la section Constantes pré-définies, et dans le fichier php.ini. Pour modifier cette configuration durant l'exécution du script, utiliser la fonction error_reporting(). Voir aussi la directive display_errors.

  La valeur par défaut est `E_ALL`.

  Antérieur à PHP 8.0.0, la valeur par défaut était : ``E_ALL` & ~`E_NOTICE` & ~`E_STRICT` & ~`E_DEPRECATED``. Ceci signifie que les diagnostics de niveau `E_NOTICE`, `E_STRICT` et `E_DEPRECATED` n'étaient pas affichés.

  > Note: Les constantes PHP en dehors de PHP

  > L'utilisation des constantes PHP en dehors de PHP, comme dans le fichier httpd.conf, n'a pas de signification utile, donc dans ces cas, des valeurs entières sont nécessaires. Et depuis que les niveaux d'erreurs ont été ajoutés, la valeur maximale (pour `E_ALL`) devrait changer. Donc, à la place de `E_ALL`, utiliser plutôt une valeur plus grande pour couvrir tous les octets, une valeur numérique comme `2147483647` (incluant toutes les erreurs, et non juste les erreurs de type `E_ALL`).

`fatal_error_backtraces` bool
  Contrôle si les erreurs fatales doivent inclure une trace. Les erreurs fatales sont `E_ERROR`, `E_CORE_ERROR`, `E_COMPILE_ERROR`, `E_USER_ERROR`, `E_RECOVERABLE_ERROR`, et `E_PARSE`.
`display_errors` string

  Cette directive détermine si les erreurs doivent être affichées à l'écran dans la sortie, ou si elles doivent être cachées à l'utilisateur.

  - `Off` : n'affiche aucune erreur.
  - `On` ou `stdout` : affiche les erreurs vers `stdout`. C'est la valeur par défaut.
  - `stderr` : affiche les erreurs vers `stderr`. Effectif uniquement pour les SAPI `CLI`, `phpdbg` et `CGI`.
  Le fichier `php.ini-development` fourni définit cette valeur à `On` ; `php.ini-production` la définit à `Off`.

  > Note: C'est une directive nécessaire en développement, mais qui ne doit jamais être utilisée sur un système en production. (e.g. systèmes connectés à Internet).

  > Note:

  > Bien que display_errors puisse être défini en cours d'exécution (avec la fonction ini_set()), il n'aura aucun effet si le script a des erreurs fatales, car l'action désirée au moment de l'exécution ne sera pas exécutée.

`display_startup_errors` bool

  Même si display_errors est activé, des erreurs peuvent survenir lors de la séquence de démarrage de PHP, et ces erreurs sont cachées. Avec cette option, il est possible de les afficher, ce qui est recommandé pour le débogage. En dehors de ce cas, il est fortement recommandé de laisser display_startup_errors à off.

`log_errors` bool

  Indique si les messages d'erreur générés par les scripts devraient être journalisés dans le journal d'erreurs du serveur ou dans error_log. Cette fonction est spécifique aux serveurs.

  > Note:

  > Il est recommandé d'utiliser l'historique d'erreur, plutôt que d'afficher les erreurs sur les sites de production.

`log_errors_max_len` int

  Configure la taille maximale des erreurs qui seront enregistrées dans l'historique, en octets. Dans les informations de error_log, l'origine est ajoutée. La valeur par défaut est de 1024. 0 signifie qu'il n'y a pas de limite de taille. Cette longueur est appliquée pour enregistrer dans l'historique les erreurs, afficher les erreurs et également à $php_errormsg mais pas pour les appels explicites aux fonctions comme error_log().

  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..
`ignore_repeated_errors` bool

  Ne pas enregistrer des messages répétitifs. Les erreurs répétées doivent survenir au même moment, à la même ligne et depuis le même fichier de script, à moins que ignore_repeated_source soit défini à `true`.

`ignore_repeated_source` bool

  Ignore la source du message lors des messages répétés. Lorsqu'on a configuré cette option à On, ne seront pas enregistrées les erreurs répétées provenant de fichiers et lignes de code différents.

`report_memleaks` bool
  Si ce paramètre est défini à On (par défaut), il affichera un rapport de fuite mémoire détectée par le gestionnaire de mémoire Zend. Ce rapport sera envoyé à stderr sur les plateformes Posix. Sous Windows, il sera envoyé au débogueur en utilisant OutputDebugString() et pourra être lu avec des outils comme » DbgView. Ce paramètre n'a d'effet que lors d'une compilation de débogage, et si error_reporting inclut `E_WARNING` dans sa liste autorisée.
  Avertissement

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

`track_errors` bool

  Si cette option est activée, le dernier message d'erreur sera placé dans la variable $php_errormsg.

`html_errors` bool

  Si activé, les messages d'erreur incluront les balises HTML. Le format des erreurs HTML produira des messages cliquables qui redirigeront l'utilisateur vers une page décrivant l'erreur ou la fonction qui a causé l'erreur. Ces références sont affectées par docref_root et docref_ext.

  Si désactivé, le message d'erreur sera rendu en texte plein.

`xmlrpc_errors` bool

  Si activé, désactive le rapport normal d'erreur et formate les erreurs comme des messages d'erreur XML-RPC.

`xmlrpc_error_number` int

  Utilisé comme valeur de l'élément XML-RPC faultcode.

`docref_root` string

  Le nouveau format d'erreur contient une référence à une page décrivant l'erreur, ou la fonction ayant causé l'erreur. Pour le manuel, il est possible de télécharger ce dernier dans la langue, et configurer cette option pour qu'elle pointe sur lui. Si la copie du manuel est accessible à `"/manual/"`, il est possible de simplement utiliser `docref_root=/manual/`. De plus, il faut configurer `docref_ext` pour qu'elle corresponde aux extensions du manuel. `docref_ext=.html`. Il est possible d'utiliser des références externes. Par exemple, il est possible d'utiliser `docref_root=http://manual/en/` ou `docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon&url=http%3A%2F%2Fwww.php.net%2F"`

  La plupart du temps, l'on utilise l'option docref_root avec un slash à la fin (`"/"`). Mais ce n'est pas obligatoire, comme le montre le second exemple ci-dessus.

  > Note:

  > Cette directive est destinée à aider dans le développement en rendant facile la consultation de la description d'une fonction. Ne jamais l'utiliser sur un système de production (e.g. système connecté à Internet).

`docref_ext` string

  Voir aussi docref_root.

  > Note:

  > La valeur de docref_ext doit commencer par un point `"."`.

`error_prepend_string` string

  La chaîne à placer avant les messages d'erreur. Seulement utilisé quand le message d'erreur est affiché à l'écran. L'usage principal est de pouvoir ajouter du balisage HTML additionnel avant le message d'erreur.

`error_append_string` string

  La chaîne à placer après les messages d'erreur. Seulement utilisé quand le message d'erreur est affiché à l'écran. L'usage principal est de pouvoir ajouter du balisage HTML additionnel après le message d'erreur.

`error_log` string

  Nom du fichier où seront enregistrées les erreurs. Le fichier doit être accessible en écriture par l'utilisateur exécutant le serveur web. Si la valeur spéciale `syslog` est utilisée, les erreurs seront envoyées au système d'historique du serveur. Sous Unix, cela correspond à syslog(3) et sous Windows à l'historique d'événement. Voir aussi : syslog(). Si cette directive n'est pas fixée, les erreurs sont envoyées au journal d'erreurs SAPI. Par exemple, s'il s'agit d'une erreur de journal dans Apache ou `stderr` dans CLI. Voir aussi la fonction error_log().

`error_log_mode` int

  Mode de fichier pour le fichier défini pour error_log.

`syslog.facility` string

  Spécifie le type de programme qui consigne le message. Uniquement efficace si error_log est défini sur "syslog".

`syslog.filter` string

  Spécifie le type de filtre pour filtrer les messages consignés. Les caractères autorisés sont passés non modifiés ; tous les autres sont écrits dans leur représentation hexadécimale préfixée avec `\x`.

  - `all` – la chaîne consignée sera séparée lors des caractères de retour à la ligne, et tous les caractères sont transmis sans altérations
  - `ascii` – la chaîne consignée sera séparée lors des caractères de retour à la ligne, et tout caractère 7-bit ASCII non imprimable sera échappé
  - `no-ctrl` – la chaîne consignée sera séparée lors des caractères de retour à la ligne, et les caractères non imprimables seront échappés
  - `raw` – tous les caractères sont passés au système de consignation sans altérations, sans séparations aux retours à la ligne (identique à PHP antérieur à 7.3)
  Ce paramètre affectera la consignation via error_log défini à "syslog" et les appels à syslog().

  > Note:

  > Le type de filtre `raw` est disponible à partir de PHP 7.3.8 et PHP 7.4.0.

  Cette directive n'est pas supportée sur Windows.
`syslog.ident` string

  Spécifie la chaîne d'identité qui est ajoutée à chaque message. Uniquement efficace si error_log est défini sur "syslog".

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