Maison > développement back-end > tutoriel php > Les gestionnaires d'erreurs personnalisés peuvent-ils vraiment détecter les erreurs d'analyse et les erreurs fatales en PHP ?

Les gestionnaires d'erreurs personnalisés peuvent-ils vraiment détecter les erreurs d'analyse et les erreurs fatales en PHP ?

Barbara Streisand
Libérer: 2024-11-29 00:17:11
original
842 Les gens l'ont consulté

Can Custom Error Handlers Really Catch Parse and Fatal Errors in PHP?

Gestion des erreurs d'analyse et fatales à l'aide d'un gestionnaire d'erreurs personnalisé

Bien qu'il soit généralement supposé que les gestionnaires d'erreurs personnalisés ne peuvent pas gérer les erreurs d'analyse et fatales, ce n'est pas tout à fait exact. En utilisant une approche différente, nous pouvons en effet piéger et gérer ces erreurs à l'aide d'un gestionnaire d'erreurs personnalisé.

Utiliser une fonction d'arrêt

La clé pour gérer les erreurs d'analyse et fatales consiste à utiliser une fonction d'arrêt enregistrée avec register_shutdown_function(). Cette fonction sera invoquée à la fin du script, nous permettant d'intercepter toutes les erreurs non détectées.

Pré-gestionnaire d'erreurs (prepend.php)

Pour garantir que le gestionnaire d'erreurs est accessible à tous les scripts PHP, pensez à ajouter un fichier comme prepend.php comme suit :

set_error_handler("errorHandler");
register_shutdown_function("shutdownHandler");
Copier après la connexion

Gestionnaire d'erreurs (errorHandler)

Cette fonction gérera les erreurs en fonction de leur niveau et les enregistrera de manière appropriée :

function errorHandler($error_level, $error_message, $error_file, $error_line, $error_context)
{
    // Handle errors according to $error_level and log them using mylog()
}
Copier après la connexion

Gestionnaire d'arrêt (shutdownHandler)

Sur fin du script, cette fonction gérera toutes les erreurs non détectées restantes :

function shutdownHandler()
{
    $lasterror = error_get_last();
    // Handle last error based on its type and log it using mylog()
}
Copier après la connexion

Fonction de journalisation (mylog)

Cette fonction est utilisée pour enregistrer les erreurs à l'emplacement souhaité, comme une base de données ou un fichier.

Mise en œuvre

En configurant cette personnalisation mécanisme de gestion des erreurs, nous pouvons désormais gérer tous les niveaux d’erreur, y compris les erreurs d’analyse et les erreurs fatales. La gestion des erreurs sera cohérente dans tous les scripts qui contiennent le fichier prepend.php.

Considérations

  1. Duplication potentielle de la journalisation des erreurs.
  2. Personnalisation de la fonction de journalisation pour gérer les erreurs avec élégance.
  3. Implémentation de la gestion des erreurs pour MySQL et JavaScript appels.

Configuration PHP.ini

Pour ajouter automatiquement prepend.php à tous les scripts PHP, ajoutez la ligne suivante à php.ini :

auto_prepend_file = "/homepages/45/d301354504/htdocs/hmsee/cgi-bin/errorhandling.php"
Copier après la connexion

Cette approche fournit une solution complète pour gérer les erreurs d'analyse et les erreurs fatales à l'aide d'un gestionnaire d'erreurs personnalisé.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal