


Utilisation et exemples de fonctions de 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
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.
Gestion des erreurs PHP
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 : utilisez la fonction die()
Premièrement, cet exemple montre un simple script qui ouvre un fichier texte :
<?php $file=fopen("welcome.txt","r"); ?>
Si le fichier n'existe pas, vous obtiendrez une erreur comme celle-ci :
Avertissement : fopen(welcome.txt) [function.fopen] : échec d'ouverture du flux :
Aucun fichier ou répertoire de ce type dans C:webfoldertest.php à la ligne 2
Pour éviter que les utilisateurs n'obtiennent des erreurs comme l'erreur ci-dessus message, nous vérifions si le fichier existe avant d'y accéder :
<?php if(!file_exists("welcome.txt")) { die("File not found"); } else { $file=fopen("welcome.txt","r"); } ?>
Désormais, si le fichier n'existe pas, vous obtiendrez une erreur comme celle-ci Message :
Fichier introuvable
Le code ci-dessus est plus efficace que le code précédent car il utilise un mécanisme simple de gestion des erreurs pour terminer le script après une erreur.
Cependant, simplement mettre fin au script n'est pas toujours approprié. Examinons les fonctions PHP alternatives pour gérer les erreurs.
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 | 必需。为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。 |
error_message | 必需。为用户定义的错误规定错误消息。 |
error_file | 可选。规定错误发生的文件名。 |
error_line | 可选。规定错误发生的行号。 |
error_context | 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。 |
错误报告级别
这些错误报告级别是用户自定义的错误处理程序处理的不同类型的错误:
现在,让我们创建一个处理错误的函数:
function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br>"; echo "Ending Script"; die(); }
上面的代码是一个简单的错误处理函数。当它被触发时,它会取得错误级别和错误消息。然后它会输出错误级别和消息,并终止脚本。
现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。
Valeur | Constante | Description |
---|---|---|
2 | E_WARNING | Erreur d'exécution non fatale. Ne suspendez pas l’exécution du script. |
8 | E_NOTICE | notification d'exécution. 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 set_error_handler()) |
8191 | E_ALL | Toutes les erreurs et avertissements. (En PHP 5.4, E_STRICT fait partie de E_ALL) |
设置错误处理程序
PHP 的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。
可以修改错误处理程序,使其仅应用到某些错误,这样脚本就能以不同的方式来处理不同的错误。然而,在本例中,我们打算针对所有错误来使用我们自定义的错误处理程序:
set_error_handler("customError");
由于我们希望我们的自定义函数能处理所有错误,set_error_handler() 仅需要一个参数,可以添加第二个参数来规定错误级别。
实例
通过尝试输出不存在的变量,来测试这个错误处理程序:
Error: [$errno] $errstr"; } //set error handler set_error_handler("customError"); //trigger error echo($test); ?>
以上代码的输出如下所示:
Error: [8] Undefined variable: test
触发错误
在脚本中用户输入数据的位置,当用户的输入无效时触发错误是很有用的。在 PHP 中,这个任务由 trigger_error() 函数完成。
实例
在本例中,如果 "test" 变量大于 "1",就会发生错误:
<?php $test=2; if ($test>1) { trigger_error("Value must be 1 or below"); } ?>
以上代码的输出如下所示:
Notice: Value must be 1 or below
in C:webfoldertest.php on line 6
您可以在脚本中任何位置触发错误,通过添加的第二个参数,您能够规定所触发的错误级别。
可能的错误类型:
E_USER_ERROR - 致命的用户生成的 run-time 错误。错误无法恢复。脚本执行被中断。
E_USER_WARNING - 非致命的用户生成的 run-time 警告。脚本执行不被中断。
E_USER_NOTICE - 默认。用户生成的 run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。
在本例中,如果 "test" 变量大于 "1",则发生 E_USER_WARNING 错误。如果发生了 E_USER_WARNING,我们将使用我们自定义的错误处理程序并结束脚本:
1) { trigger_error("Value must be 1 or below",E_USER_WARNING); } ?>
以上代码的输出如下所示:
Error: [512] Value must be 1 or below
Ending Script
现在,我们已经学习了如何创建自己的 error,以及如何触发它们,接下来我们研究一下错误记录。
错误记录
在默认的情况下,根据在 php.ini 中的 error_log 配置,PHP 向服务器的记录系统或文件发送错误记录。通过使用 error_log() 函数,您可以向指定的文件或远程目的地发送错误记录。
通过电子邮件向您自己发送错误消息,是一种获得指定错误的通知的好办法。
通过 E-Mail 发送错误消息
在下面的例子中,如果特定的错误发生,我们将发送带有错误消息的电子邮件,并结束脚本:
<?php //error handler function function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br>"; echo "Webmaster has been notified"; error_log("Error: [$errno] $errstr",1, "someone@example.com","From: webmaster@example.com"); } //set error handler set_error_handler("customError",E_USER_WARNING); //trigger error $test=2; if ($test>1) { trigger_error("Value must be 1 or below",E_USER_WARNING); } ?>
以上代码的输出如下所示:
Error: [512] Value must be 1 or below
Webmaster has been notified
接收自以上代码的邮件如下所示:
Error: [512] Value must be 1 or below
这个方法不适合所有的错误。常规错误应当通过使用默认的 PHP 记录系统在服务器上进行记录。
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
