Gestion des erreurs PHP
En PHP, la gestion des erreurs par défaut est simple. Un message d'erreur est envoyé au navigateur avec le nom du fichier, le numéro de ligne et un message décrivant l'erreur.
La gestion des erreurs est un élément important lors de la création de scripts et d'applications Web. Si votre code manque de codage de détection d’erreurs, le programme n’aura pas l’air professionnel et ouvrira la porte à des risques de sécurité.
Ce tutoriel couvre certaines des méthodes de détection d'erreurs les plus importantes en PHP.
Nous vous expliquerons différentes méthodes de gestion des erreurs :
Instruction simple "die()"
Erreurs personnalisées et déclencheurs d'erreurs
Rapport d'erreurs
Gestion des erreurs de base : utilisation de la fonction die()
Le premier exemple montre un script simple qui ouvre un fichier texte :
<?php
$file=fopen("welcome.txt","r");
?>
Si le fichier n'existe pas, vous obtiendrez une erreur similaire à celle-ci :
Avertissement : fopen(welcome.txt) [function.fopen] : échec de l'ouverture du flux :
Aucun fichier ou répertoire de ce type dans /www/php/test/test php. en ligne 2
Afin d'éviter aux utilisateurs d'avoir des messages d'erreur comme celui ci-dessus, nous vérifions si le fichier existe avant d'y accéder :
<?php if(!file_exists("welcome.txt")) { die("文件不存在"); } else { $file=fopen("welcome.txt","r"); } ?>
Maintenant, si le fichier n'existe pas, il suffit affichez-le directement. Le fichier n'existe pas
Créer un gestionnaire d'erreurs personnalisé
Créer un gestionnaire d'erreurs personnalisé est très simple. Nous avons simplement créé une fonction dédiée qui peut être appelée lorsqu'une erreur survient en PHP.
La fonction doit être capable de gérer au moins deux paramètres (niveau d'erreur et message d'erreur), mais peut accepter jusqu'à cinq paramètres (facultatif : fichier, numéro de ligne et contexte d'erreur) :
Syntaxe
error_function(error_level,error_message,
error_file,error_line,error_context)
error_level Obligatoire. Spécifie le niveau de rapport d'erreurs pour les erreurs définies par l'utilisateur. Doit être un nombre. Consultez le tableau ci-dessous : Niveaux de rapport d'erreurs.
error_message Obligatoire. Spécifie les messages d'erreur pour les erreurs définies par l'utilisateur.
error_file Facultatif. Spécifie le nom du fichier dans lequel l'erreur s'est produite.
error_line Facultatif. Spécifie le numéro de ligne où l'erreur s'est produite.
error_context Facultatif. Spécifie un tableau contenant chaque variable utilisée lorsque l'erreur s'est produite et leurs valeurs.
Niveaux de rapport d'erreurs
Ces niveaux de rapport d'erreurs sont différents types d'erreurs gérées par des gestionnaires d'erreurs définis par l'utilisateur :
2 E_WARNING Erreur d'exécution non fatale. Ne suspendez pas l’exécution du script.
8 Notification d'exécution E_NOTICE. Se produit lorsque le script détecte une erreur possible, mais peut également se produire lorsque le script s'exécute normalement.
256 E_USER_ERROR Erreur fatale générée par l'utilisateur. Ceci est similaire à E_ERROR défini par le programmeur à l'aide de la fonction PHP trigger_error().
512 E_USER_WARNING Avertissement non fatal généré par l'utilisateur. Ceci est similaire au E_WARNING défini par le programmeur à l'aide de la fonction PHP trigger_error().
1024 E_USER_NOTICE Notification générée par l'utilisateur. Ceci est similaire à E_NOTICE défini par le programmeur à l'aide de la fonction PHP trigger_error().
4096 E_RECOVERABLE_ERROR Erreur fatale capturable. Comme E_ERROR, mais peut être intercepté par un gestionnaire défini par l'utilisateur. (Voir aussi set_error_handler()) (En PHP 5.4, E_STRICT fait partie de E_ALL)
Créer une fonction qui gère les erreurs <?php
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "脚本结束";
die();
}
?>
Le code ci-dessus est une simple gestion des erreurs fonction. Lorsqu'il est déclenché, il obtient le niveau d'erreur et le message d'erreur. Il imprime ensuite le niveau d'erreur et le message, puis termine le script.
Maintenant que nous avons créé une fonction de gestion des erreurs, nous devons déterminer quand la déclencher
Configurer le gestionnaire d'erreurs Le gestionnaire d'erreurs par défaut de PHP est le gestionnaire d'erreurs intégré. Nous allons transformer la fonction ci-dessus en gestionnaire d'erreurs par défaut lorsque le script est en cours d'exécution.
Le gestionnaire d'erreurs peut être modifié pour s'appliquer uniquement à certaines erreurs, afin que le script puisse gérer différentes erreurs de différentes manières. Cependant, dans ce cas, nous allons utiliser notre gestionnaire d'erreurs personnalisé pour toutes les erreurs
set_error_handler("customError");