PHP gestion d'erreur comment gérer les erreurs et où mettre le code erruer en php
La gestion des erreurs dans PHP est simple. Un message d'erreur avec le nom de fichier le numéro de ligne, et le message de l'erreur est envoyé au navigateur.
La gestion des erreurs par défaut dans PHP est très simple. Un message d'erreur avec le nom de fichier le numéro de ligne, et un message décrivant l'erreur est envoyé au navigateur.
Gestion des erreurs en PHP
Lors de la manipulation ou la création de scripts et des applications web des erreurs peuvent apparaître, la gestion d’erreur est donc un élément important. Si votre code n'a pas de contrôle d'erreur, votre programme peut paraître peu professionnel et vous pouvez être ouvert à des risques de sécurité.
Ce didacticiel contient quelques-unes des méthodes de contrôle des erreurs les plus courantes en PHP.
Nous allons montrer différentes méthodes de manipulation d'erreur:
* Etat simple "die ()"
* Les erreurs personnalisées et déclencheur d'erreur
* Rapport d'erreur
Gestion d'erreur de base : Utilisant la fonction die()
La fonction die() est une fonction qui renvoie un message.
Le premier exemple montre un code simple qui ouvre un fichier texte :
Supposons qu'on veut ouvrir un fichier texte "fichier.txt" à l’aide de la fonction fopen() .
Voici le code:
Si le fichier n'existe pas vous pourriez obtenir une erreur comme ceci :
Warning: fopen(fichier.txt) [function.fopen]: failed to open stream:
No such file or directory in ...webfolder\test.php on line 2
C’est le message par défaut de PHP .
Pour éviter que l'utilisateur reçoit un message d'erreur comme celui ci-dessus, nous procédons comme suit:
Nous examinons si le fichier existent avant que nous essayions de lui accéder :
Maintenant si le fichier n'existe pas vous obtenez une erreur comme ceci :
Le fichier n’existe pas!
Le code que nous venons de voir est une manière très simple pour gérer les erreurs en php, vous mettez ce que vous voulez dans le message d’erreur mais il arrête l’exécution du code.
Cependant, l'arrêt du code n'est pas toujours la bonne solution.
Il y a mieux :
Jetons un coup d'oeil aux fonctions alternatives de PHP pour manipuler des erreurs.
Création d'un gestionnaire d'erreurs personnalisé
La Création d'un gestionnaire d'erreurs personnalisé est tout à fait simple. Nous créons simplement une fonction spéciale qui peut être appelée quand une erreur se produit dans PHP.
Cette fonction doit pouvoir manipuler deux paramètres au minimum (niveau d'erreur et message d'erreur) mais peut accepter jusqu'à cinq paramètres comme suit: Syntaxe
Obligatoire. Spécifie le niveau de rapport d'erreur pour l'erreur d'utilisateur. Doit être un nombre. Voir tableau ci-dessous des niveaux de rapport d'erreur possible
message
Obligatoire. Spécifie le message d'erreur pour l'erreur définie par l'utilisateur
error_file
Facultatif. Spécifie le nom de fichier dans lequel l'erreur s'est produite
error_line
Facultatif. Spécifie le numéro de la ligne dans laquelle l'erreur s'est produite
error_context
Facultatif. Spécifie un tableau contenant toutes les variables, et leurs valeurs, en cours d'utilisation lorsque l'erreur s'est produite
Niveaux d'erreur
Ces niveaux d'erreur sont les différents types d'erreur que le traiteur défini pour l'utilisateur :
Valeur
Constant
Description
2
E_WARNING
Erreurs d'exécution non fatales. L'exécution du code n'est pas arrêtée
8
E_NOTICE
Avis d'exécution. Le script a trouvé quelque chose qui pourrait être une erreur, mais pourrait également se produire lors de l'exécution normal d'un script
256
E_USER_ERROR
Erreur fatal générée par les utilisateurs. C'est comme un E_ERROR fixé par le programmeur à l'aide de la fonction trigger_error () de PHP
512
E_USER_WARNING
Avertissement écrit par l'utilisateur non fatal. C'est comme un E_WARNING réglé par le programmeur employant la fonction trigger_error() de PHP
1024
E_USER_NOTICE
Avis d’erreur générée par l'utilisateur. C'est comme un E_NOTICE fixé par le programmeur à l'aide de la fonction trigger_error () de PHP
4096
E_RECOVERA BLE_ERROR
Erreur bloquante . C'est comme un E_ERROR (voir aussi set_error_handler())
8191
E_ALL
Toutes les erreurs et avertissements, à un niveau moins que E_STRICT (E_STRICT fera partie d'E_ALL en PHP 6.0)
Passons maintenant à la création d’une fonction pour manipuler des erreurs :
Le code ci-dessus est une fonction de gestion d'erreur simple. Quand il est déclenché, il reçoit le niveau d'erreur et un message d'erreur. Il produit alors le niveau et le message d'erreur et termine le code.
Maintenant que nous avons créé une fonction de gestion d'erreur nous devons décider quand elle devrait être déclenchée(càd où est ce que nous allons la placer pour qu'elle fonctionne).
Placez le traiteur des erreurs
Le gestionnaire d'erreur par défaut de PHP est intégré dans le gestionnaire d'erreur que nous allons utilisé.
Il est possible de changer le gestionnaire des erreurs pour être appliqué seulement pour quelques erreurs, de cette façon le code peut manipuler différentes erreurs de différentes manières.
Cependant, dans l’exemple qui suivra nous allons employer notre gestionnaire des erreurs personnalisé pour gérer toutes les erreurs, pour cela nous utiliserons la fonction php :
set_error_handler("customError");
Puisque nous voulons que notre fonction personnalisé manipule toutes les erreurs, la fonction set_error_handler () a seulement besoin d'un paramètre qui est notre fonction customError() que nous avons créer en haut, un deuxième paramètre pourrait être ajouté pour spécifier un niveau d'erreur.
Exemple Test du gestionnaire d'erreur en essayant une variable de sortie qui n'existe pas:
Dans cet exemple nous voulons affiche à l'aide de la fonction echo la variable "test" qui n'existe pas.
Le résultat du code ci-dessus devrait être quelque chose du genre:
Erreur : [8] Undefined variable: test
Déclenchez une erreur
Dans un script où les utilisateurs peuvent entrer des données , il est utile de déclencher des erreurs lorsqu'une entrée illégale
se produit. En PHP, cela se fait par la fonction.
trigger_error ().
Exemple Dans cet exemple une erreur se produit si la variable "test" est plus grande que "1" :
<?php
$test=2;
if ($test>1)
{
trigger_error("La valeur doit être <= 1");
}
?>
Le résultat du code ci-dessus devrait être quelque chose du genre:
Notification : La valeur doit être <= 1
in C:\webfolder\test.php on line 2
Une erreur peut être déclenché n'importe où vous voulez dans un code, et en ajoutant un deuxième paramètre, vous pouvez spécifier quel niveau d'erreur est déclenché.
Types d'erreur possibles :
E_USER_ERROR
E_USER_WARNING
E_USER_NOTICE – Par défaut. Exemple
Dans cet exemple un E_USER_WARNING se produit si la variable de "test" est plus grande que "1". Si un E_USER_WARNING se produit nous emploierons notre gestionnaire personnalisé des erreurs et finirons le code :
<?PHP
//fonction traiteur des erreurs
function customError($errno, $errstr)
{
echo "<b>Erreur : </b> [$errno] $errstr<br />";
echo "Fin de code ";
die();
}
// error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
{
trigger_error("La valeur doit être < = 1 ",E_USER_WARNING);
}
?>
Le résultat du code ci-dessus devrait être :
Erreur : [512] La valeur doit être < = 1
Fin de code
Maintenant que nous avons appris à créer nos propres erreurs et comment les déclencher, jetons un coup d'oeil à l'enregistrement d'erreurs.
Enregistrement d'erreurs
Par défaut, le PHP envoie un registre d'erreurs au système de notation de serveurs ou à un dossier, selon la façon dont la configuration d'error_log est placée dans le dossier de php.ini. En employant la fonction d'error_log () vous pouvez envoyer des registres d'erreurs à un dossier spécifique ou à une destination à distance.
L'envoi des messages d'erreurs à vous-même par l'email peut être une bonne manière d’être avisé des erreurs spécifiques.
Envoyez un message d'erreur par E-Mail
Dans l'exemple ci-dessous nous enverrons un email avec un message d'erreur et finirons le code, si une erreur spécifique se produit :