Latest web development tutorials
×

PHP cours

PHP cours PHP Brève introduction PHP installer PHP grammaire PHP variable PHP echo/print PHP Types de données PHP constante PHP chaîne PHP opérateurs PHP If...Else PHP Switch PHP tableau PHP Tri d'un tableau PHP Superglobales PHP While circulation PHP For circulation PHP fonction PHP Variables magiques PHP Namespaces PHP Object-Oriented

PHP forme

PHP forme PHP Authentification Forms PHP forme - Les champs obligatoires PHP forme - email de vérification et d'URL PHP Complète instance de formulaire PHP $_GET variable PHP $_POST variable

PHP Tutorial avancée

PHP Les tableaux multidimensionnels PHP date PHP contenir PHP fichier PHP File Upload PHP Cookie PHP Session PHP E-mail PHP sécurité E-mail PHP Error PHP Exception PHP filtre PHP filtre avancé PHP JSON

PHP 7 Nouvelles fonctionnalités

PHP 7 Nouvelles fonctionnalités

PHP Base de données

PHP MySQL Brève introduction PHP MySQL raccordement PHP MySQL La création d'une base de données PHP MySQL Créer une table de données PHP MySQL Insérer des données PHP MySQL Insérez des données multiples PHP MySQL Déclarations préparées PHP MySQL Lire les données PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX Brève introduction AJAX PHP AJAX Base de données AJAX XML AJAX Recherche en temps réel AJAX RSS Reader AJAX vote

PHP Manuel de référence

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Traitement de l'image PHP RESTful

PHP Gestion des erreurs

En PHP, le traitement d'erreur par défaut est très simple. Un message d'erreur est envoyé au navigateur, le message avec le nom du fichier, le numéro de ligne et une description du message d'erreur.


PHP Gestion des erreurs

Lors de la création de scripts et des applications Web, la gestion des erreurs est une partie importante. Si votre code manque erreur code de vérification, votre programme peut paraître très professionnel, mais ouvre également la porte à des risques de sécurité.

Ce tutoriel présente quelques-uns de la méthode la plus importante en PHP de détection d'erreur.

Nous allons vous expliquer vos différentes méthodes de traitement des erreurs:

  • Simple "die ()" déclaration
  • les erreurs de mesure et les déclencheurs d'erreur
  • Rapport d'erreurs

Gestion des erreurs de base: Utilisation de la matrice function ()

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 comme ceci:

Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in /www/w3big/test/test.php on line 2

Pour empêcher les utilisateurs d'obtenir un message d'erreur similaire à ce qui précède, nous avons examiné le fichier avant d'accéder au fichier existe:

<?php
if(!file_exists("welcome.txt"))
{
	die("文件不存在");
}
else
{
	$file=fopen("welcome.txt","r");
}
?>

Maintenant, si n'existe pas le fichier, vous obtiendrez ce message d'erreur semblable à:

文件不存在

Par rapport au code précédent, le code ci-dessus est plus efficace, car il utilise un mécanisme de gestion des erreurs simples à mettre fin au script après l'erreur.

Cependant, mettre fin à tout simplement le script est pas toujours dans le bon sens. Penchons-nous sur les fonctions PHP alternatives pour les erreurs de manipulation.


Création d'un gestionnaire d'erreurs personnalisé

Créez un gestionnaire d'erreur personnalisé est assez simple. Nous créons simplement une fonction spéciale qui peut être appelée lorsqu'une erreur se produit en PHP.

Cette fonction doit être capable de traiter au moins deux paramètres (niveau d'erreur et de message d'erreur), mais peut accepter jusqu'à cinq paramètres (éventuellement: fichier, ligne numéro et le contexte d'erreur):

grammaire

error_function(error_level,error_message,
error_file,error_line,error_context)
Paramètres description
error_level Obligatoire. Erreur est défini comme un niveau de rapport d'erreur défini par l'utilisateur. Il doit être un nombre. Voir le tableau suivant: niveau de rapport d'erreur.
error_message Obligatoire. message d'erreur erreur définie par l'utilisateur indiqué.
ERROR_FILE Optionnel. Nom du fichier erreur spécifiée est survenue.
ERROR_LINE Optionnel. numéro de ligne prédéterminée l'erreur est survenue.
error_context Optionnel. Indique un tableau contenant toutes les variables lorsqu'une erreur se produit en cours d'utilisation et de leurs valeurs.

niveau de rapport d'erreur

Ces niveaux de rapport d'erreur sont les différents types d'erreurs erreur de traitement personnalisé Handler:

常量 描述
2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。
8 E_NOTICE run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。
256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
8191 E_ALL 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

Maintenant, nous allons créer une fonction pour gérer les erreurs:

function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "脚本结束";
	die();
}

Le code ci-dessus est une simple fonction de gestion des erreurs. Quand il est déclenché, il va obtenir le niveau d'erreur et les messages d'erreur. Il délivre alors le niveau d'erreur et le message et termine le script.

Maintenant, nous avons créé une fonction de gestion des erreurs, nous devons déterminer quand déclencher la fonction.


Réglage de gestionnaire d'erreurs

Le gestionnaire d'erreurs par défaut de PHP est un gestionnaire d'erreurs intégré. Nous allons transformer la fonction ci-dessus la durée du gestionnaire d'erreur par défaut du script.

Vous pouvez modifier le gestionnaire d'erreurs de sorte qu'il applique uniquement à une erreur, de sorte que le script peut être différentes façons de gérer les différentes erreurs. Cependant, dans ce cas, nous avons l'intention d'utiliser pour toutes Handler erreurs d'erreur notre personnalisé:

set_error_handler("customError");

Puisque nous voulons que notre fonction personnalisée pour gérer toutes les erreurs, set_error_handler () nécessaire seulement un paramètre, vous pouvez ajouter un second argument pour spécifier un niveau d'erreur.

Exemples

En essayant de variable de sortie qui n'existe pas, pour tester le gestionnaire d'erreur:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr";
}

// 设置错误处理函数
set_error_handler("customError");

// 触发错误
echo($test);
?>

La sortie du code ci-dessus est la suivante:

Error: [8] Undefined variable: test


Trigger erreur

Dans le script, les données d'emplacement d'entrée de l'utilisateur lors de l'entrée utilisateur n'a pas été déclenchée lorsqu'une erreur est utile. En PHP, cela se fait par la fonction trigger_error () pour terminer.

Exemples

Dans cet exemple, si la variable "test" est supérieur à "1", une erreur se produit:

<?php
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1");
}
?>

La sortie du code ci-dessus est la suivante:

Notice: 变量值必须小于等于 1
in /www/test/w3big.php on line 5

Vous pouvez déclencher une erreur dans le script où, en ajoutant un second paramètre, vous pouvez spécifier le niveau d'erreur est déclenchée.

types d'erreurs possibles:

  • E_USER_ERROR - Fatal erreur d'exécution généré par l'utilisateur. Erreur irrécupérable. L'exécution du script est interrompue.
  • E_USER_WARNING - avertissement d'exécution généré par l'utilisateur non-fatal. L'exécution du script ne soit pas interrompue.
  • E_USER_NOTICE - par défaut. Généré par l'utilisateur préavis d'exécution. Lorsque le script a détecté une erreur peut se produire, mais peut également se produire dans le script de fonctionnement normal.

Exemples

Dans cet exemple, si la variable "test" est supérieur à "1", une erreur se produit E_USER_WARNING. Si cela se produit E_USER_WARNING, nous allons utiliser notre gestionnaire d'erreur personnalisé et à la fin du script:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "脚本结束";
	die();
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

La sortie du code ci-dessus est la suivante:

Error: [512] 变量值必须小于等于 1
脚本结束

Maintenant que nous avons appris comment créer votre propre erreur, et comment les déclencher, regardons le journal des erreurs.


Error Log

En cas de défaut, selon la configuration de error_log est définie dans le php.ini, PHP envoie un système d'enregistrement d'erreur d'enregistrer ou de serveur de fichiers. En utilisant le error_log () la fonction que vous pouvez envoyer des journaux d'erreurs dans un fichier spécifié ou une destination distante.

Il envoie un message d'erreur pour vous par e-mail est un bon moyen pour être averti des erreurs spécifiques.

Message d'erreur est envoyé par e-mail

Dans l'exemple suivant, si une erreur spécifique se produit, nous vous enverrons un e-mail avec un message d'erreur et terminer le script:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "已通知网站管理员";
	error_log("Error: [$errno] $errstr",1,
	"[email protected]","From: [email protected]");
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

La sortie du code ci-dessus est la suivante:

Error: [512] 变量值必须小于等于 1
已通知网站管理员

Les messages reçus du code ci-dessus est la suivante:

Error: [512] 变量值必须小于等于 1

Cette méthode ne convient pas à toutes les erreurs. erreur conventionnelle devrait être en utilisant le système d'enregistrement de PHP par défaut pour l'enregistrement sur le serveur.