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
Barbara Streisandoriginal
2024-11-29 00:17:11921parcourir

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");

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()
}

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()
}

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"

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!

Déclaration:
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