Maison > développement back-end > tutoriel php > Explication détaillée de la gestion des erreurs PHP en mode développement et en mode produit

Explication détaillée de la gestion des erreurs PHP en mode développement et en mode produit

藏色散人
Libérer: 2023-04-08 12:26:02
avant
2643 Les gens l'ont consulté

Les erreurs de programme sont toujours inévitables, même si nous avons été très prudents lors de l'écriture du code.

Lors du développement de programmes php, nous espérons que lorsque nous rencontrons des erreurs php, elles pourront nous être affichées dès que possible pour faciliter le débogage. Lorsque le programme est développé et devient un produit formel, nous espérons enregistrer des messages d'erreur inattendus dans le journal des erreurs au lieu d'afficher ces messages d'erreur aux utilisateurs, car les utilisateurs sont très susceptibles de les utiliser pour exposer des chemins de script, des informations sur la base de données ou d'autres messages d'erreur. indiquer des opérations de piratage destructrices.

Gestion des erreurs PHP

Si le script php rencontre une erreur lors de l'exécution, elle sera traitée sous la forme d'une erreur. Certaines erreurs termineront le script et continueront. exécution après que l'erreur soit signalée. Certains ne le feront pas, veuillez vous référer au manuel pour plus de détails.

La méthode de gestion des erreurs de PHP est basée sur les options de configuration suivantes. Ces configurations peuvent être déclarées dans le code ou définies dans le fichier php.ini. Si vous n'avez pas besoin de modifier fréquemment ces configurations, il est recommandé de les définir dans le fichier php.ini pour rendre votre code plus propre et plus concis.

# 是否打印错误信息到浏览器/命令行界面
# 开发模式下建议开启,产品模式下强烈建议关闭
ini_set('display_errors', 'On');
# 是否记录错误信息到日志
# 开发模式和产品模式下都建议开启
ini_set('log_errors', 'On');
# 指定错误信息日志文件,若开启了 log_errors 选项,记得指定日志文件位置
# 要确保执行 php 脚本的系统用户拥有该文件的 write 权限,否则日志无法被写入
ini_set('error_log', '/usr/local/php/errors.log');
# 该选项用以设定错误报告的等级
# 等同于 error_reporting(E_ALL) 
# 无论开发模式还是产品模式下都建议开到E_ALL(报告所有的错误信息)
# 产品模式下也需要设置此选项,因为关闭了 display_errors 并开启了 log_errors
# 所以浏览器/命令行界面不会因此暴露报错信息
ini_set('error_reporting', E_ALL);
Copier après la connexion

De plus, PHP fournit également aux développeurs une fonction intégrée pour enregistrer des informations d'erreur personnalisées dans le fichier journal des erreurs dans le code :

bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )
Copier après la connexion

Le paramètre requis est message, appelant cette fonction écrira le message dans le fichier error_log défini dans php.ini.

Gestion des erreurs définie par l'utilisateur

De plus, les utilisateurs peuvent gérer le script exécuté de manière personnalisée grâce à la fonction :

mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )
Copier après la connexion

Si l'utilisateur enregistre un gestionnaire d'erreurs et spécifie les types d'erreurs, puis lorsque des erreurs de ces types d'erreurs se produisent, le gestionnaire d'erreurs standard de PHP

sera contourné (c'est-à-dire qu'aucun message d'erreur ne sera généré, le message d'erreur ne sera pas enregistré), mais le gestionnaire dans error_handler sera exécuté.

Pour une utilisation détaillée de cette fonction, veuillez vous référer au manuel (https://www.php.net/manual/zh/function.set-error-handler.php)

Recommandé tutoriels d'articles associés : tutoriel 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!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal