Fermer

janvier 26, 2023

Comment gérer les rapports d’erreurs en PHP —

Comment gérer les rapports d’erreurs en PHP —


Dans cette astuce rapide sur les rapports d’erreurs PHP, nous verrons comment utiliser les outils disponibles en PHP pour gérer les erreurs de manière contrôlée et ainsi économiser des heures de débogage.

PHP est, par définition, un langage de programmation « exceptionnel ». Cela signifie que, bien qu’il ait des exceptions, il continuera à exécuter n’importe quel script indépendamment de ce qui se passe à moins qu’une erreur fatale ne se produise.

Par example:

<?php
  echo $sitepoint;

Le code ci-dessus renverra le message suivant :

Notice: Undefined variable: sitepoint in PHP shell code on line 1

PHP ne lancera qu’une erreur de notification et continuera avec plaisir à s’exécuter. Un langage « lourd en exceptions » comme Python générera une erreur et arrêtera l’exécution.

En raison de ce comportement, les développeurs PHP doivent redoubler de prudence lors de l’écriture de leur code. Des résultats inattendus dans l’exécution des programmes peuvent se produire, car les avis n’interrompent pas l’exécution mais peuvent avoir un impact sur le comportement correct du programme.

Avant d’aborder la façon d’ajuster le style de rapport d’erreurs en PHP, commençons par comprendre les différents niveaux de gravité des erreurs PHP.

PHP a trois principaux types de messages : les erreurs, aviset mises en garde. Ceux-ci représentent les différents niveaux de gravité : E_ERROR, E_NOTICEet E_WARNING.

  • les erreurs sont des erreurs d’exécution fatales et sont généralement causées par des défauts dans le code. Cela entraînera l’arrêt de l’exécution de PHP.

  • Avis sont des messages provoqués par du code qui peut ou non causer des problèmes (par exemple, une variable indéfinie). Ceux-ci ne provoqueront pas d’arrêt d’exécution.

  • Mises en garde sont des erreurs non fatales et l’exécution du script ne sera pas interrompue.

Erreur de connexion en PHP

Par défaut, PHP n’enregistre aucune erreur. Pour que cela se produise, nous devons lui dire spécifiquement de commencer la journalisation en activant le display_errors variable sur le fichier de configuration PHP (la php.ini dossier).

Dans ce fichier, nous pouvons en outre indiquer à PHP si nous souhaitons également enregistrer les avis et les avertissements, et où ce journal doit être enregistré.

Il y a aussi la possibilité de déclencher la journalisation depuis le code. Pour ce faire, nous pouvons utiliser le error_log() une fonction. Étant donné que la journalisation des erreurs n’est pas l’objectif principal de cet article, vous trouverez plus d’informations ici.

Modification du rapport d’erreurs PHP

Nous pouvons modifier le comportement de rapport d’erreur PHP par défaut en utilisant le error_reporting() une fonction. Avec cette fonction, nous pouvons définir le niveau d’erreurs pour la durée du script. Cela se fait en transmettant une ou plusieurs des constantes d’erreur prédéfinies à la fonction.

Par exemple, si nous voulons voir non seulement les erreurs mais aussi les avis, nous pouvons utiliser ceci :

<?php
error_Reporting(E_ERROR | E_NOTICE);

Avec cette déclaration, l’exécution du script sera interrompue non seulement pour les erreurs mais aussi pour les avis.

Suppression des erreurs

Nous pouvons également dire à PHP de supprimer des erreurs spécifiques en utilisant l’opérateur de contrôle d’erreur (@). En plaçant cet opérateur au début d’une expression, toute erreur résultant directement de cette expression est réduite au silence :

<?php
echo @$sitepoint;

Cela affichera la valeur de $sitepoint s’il existe, mais il va retourner un NULL et n’imprimez rien (au lieu de lancer un avis) si ce n’est pas le cas.

Soyez très prudent lorsque vous utilisez cet opérateur, car il masquera complètement l’erreur. Non seulement l’erreur ne pas être affiché, mais il ne sera pas non plus envoyé au journal des erreurs.

Bien que cela puisse sembler inoffensif, en utilisant cet opérateur, vous masquerez des problèmes structurels plus profonds dans votre code et couvrirez des comportements errants potentiels.

PHP en tant que langage riche en exceptions

Enfin, PHP peut également être utilisé comme langage de programmation « lourd en exceptions ». Les erreurs PHP normales peuvent être levées comme exceptions en utilisant le ErrorException classe qui étend le PHP Exception classer.

Dans l’exemple suivant, une fonction définie par l’utilisateur appelée errorhandler() est défini comme gestionnaire d’erreurs avec le set_error_handler() une fonction. Il jette un ErrorException lorsqu’une erreur fatale se produit parce qu’un fichier n’est pas trouvé avec le file_get_contents() une fonction:

<?php
function errorHandler($severity, $message, $file, $line) {
   if (!(error_reporting() & $severity)) {
      return;
   }
   throw new ErrorException("Fatal Error:No such file or directory", 0, E_ERROR);
}

set_error_handler("errorHandler");

try {
   $data=file_get_contents("sitepoint.txt");
   echo $data;
} catch (ErrorException $e) {
   echo $e->getMessage();
}

En utilisant cette méthode, nous pouvons gérer les erreurs d’exécution comme nous gérons les exceptions, en les enveloppant dans un try…catch déclaration avec des instructions appropriées sur la façon de se comporter dans de telles situations.

Conclusion

En résumé, PHP peut gérer les erreurs de manière très lâche. C’est à nous, développeurs, d’utiliser les outils disponibles pour mieux les gérer afin de tirer le meilleur parti du langage. En utilisant cet ensemble d’outils, nous pouvons gérer les erreurs de manière contrôlée, économisant ainsi des heures de débogage.




Source link