PHP gestion d'erreur comment gérer les erreurs et où mettre le code erruer en php

PHP cours tutorial

La gestion des erreurs dans PHP



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:

Sélectionner le code


<?PHP
$file=fopen ("fichier.txt", "r") ;
?> 

 

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 :

Sélectionner le code


<?php
if(!file_exists("fichier.txt"))
{
die("Le fichier n’existe pas!");
}
else
{
$file=fopen("fichier.txt","r");
}
?>

 

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

error_function (niveau_erreur, message, error_file, error_line, error_context)



Paramètre Description
niveau_erreur 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 :

Sélectionner le code


function customError($errno, $errstr)
{
echo "<b>Erreur : </b> [$errno] $errstr<br />";
echo "code arrêté ";
die();
}

 

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. Sélectionner le code

 
<?php
 
function customError($errno, $errstr)
{
echo "<b>Erreur : </b> [$errno] $errstr";
}

set_error_handler("customError");

echo($test);
?>

 

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" :

Sélectionner le code


<?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 :

Sélectionner 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 :

Sélectionner le code


<?PHP
// fonction traiteur des erreurs
function customError($errno, $errstr)
{
echo "<b>Erreur : </b> [$errno] $errstr<br />";
echo " Le Web master est avisé de l’erreur ";
error_log("Error: [$errno] $errstr",1,
"exemple@example.com","From: webmaster@example.com");
}

// 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 ou ci-dessous
Le Web master est avisé de l’erreur



Et le courrier reçu du Web master est comme ceci :

Erreur : [512] La valeur doit être < = 1


Ceci ne devrait pas être employé avec toutes les erreurs.


Par carabde 20 Aout 2014