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  
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  
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. Ajoutez les valeurs suivantes pour choisir le niveau que vous désirez, 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, utilisez la fonction error_reporting(). Voyez 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'était 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 mis à part dans les cas où 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, utilisez 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).

display_errors string

Cette directive détermine si les erreurs doivent être affichées à l'écran ou non.

La valeur "stderr" envoie les erreurs vers stderr plutôt que vers stdout.

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 peut ê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, vous pouvez 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 kilo 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. Lorsque vous avez configuré cette option à On, vous n'enregistrerez pas 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.

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 clickable 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, vous pouvez télécharger ce dernier dans votre langue, et configurer cette option pour qu'elle pointe sur lui. Si votre copie du manuel est accessible à "/manual/", vous pouvez simplement utiliser docref_root=/manual/. De plus, vous devez configurer docref_ext pour qu'elle corresponde aux extensions de votre manuel. docref_ext=.html. Il est possible d'utiliser des références externes. Par exemple, vous pouvez 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, vous utilisez l'option docref_root avec un slash a la fin ("/"). Mais ce n'est pas obligatoire, comme le montre le second exemple ci-dessus.

Note:

Cette directive est destiné à vous aider dans votre 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éfinit 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 transmit 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 le consignation via error_log définit à "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".

add a note add a note

User Contributed Notes 5 notes

up
44
cjakeman at bcs dot org
15 years ago
Using
<?php ini_set('display_errors', 1); ?>
at the top of your script will not catch any parse errors. A missing ")" or ";" will still lead to a blank page.

This is because the entire script is parsed before any of it is executed. If you are unable to change php.ini and set

display_errors On

then there is a possible solution suggested under error_reporting:

<?php
error_reporting
(E_ALL);
ini_set("display_errors", 1);
include(
"file_with_errors.php");
?>


[Modified by moderator]

You should also consider setting error_reporting = -1 in your php.ini and display_errors = On if you are in development mode to see all fatal/parse errors or set error_log to your desired file to log errors instead of display_errors in production (this requires log_errors to be turned on).
up
17
ohcc at 163 dot com
7 years ago
If you set the error_log directive to a relative path, it is a path relative to the document root rather than php's containing folder.
up
1
Roger
4 years ago
When `error_log` is set to a file path, log messages will automatically be prefixed with timestamp [DD-MMM-YYYY HH:MM:SS UTC].  This appears to be hard-coded, with no formatting options.
up
0
php dot net at sp-in dot dk
9 years ago
There does not appear to be a way to set a tag / ident / program for log entries in the ini file when using error_log=syslog.  When I test locally, "apache2" is used.
However, calling openlog() with an ident parameter early in your script (or using an auto_prepend_file) will make PHP use that value for all subsequent log entries. closelog() will restore the original tag.

This can be done for setting facility as well, although the original value does not seem to be restored by closelog().
up
-20
jaymore at gmail dot com
7 years ago
Document says
So in place of E_ALL consider using a larger value to cover all bit fields from now and well into the future, a numeric value like 2147483647 (includes all errors, not just E_ALL).

But it is better to set "-1" as the E_ALL value.
For example, in httpd.conf or .htaccess, use
php_value error_reporting -1
to report all kind of error without be worried by the PHP version.
To Top