Maison >développement back-end >tutoriel php >Comment détecter les erreurs en PHP

Comment détecter les erreurs en PHP

不言
不言original
2018-07-07 16:04:332395parcourir

Cet article présente principalement la méthode de détection des erreurs en PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer.

PHP détectant les erreurs

  • Désactiver la sortie d'erreur

error_reporting(0);
  • Définir le gestionnaire d'erreurs

set_error_handler('errorHandler');
  • fonction à exécuter à la fin du script

register_shutdown_function('fatalErrorHandler');
  • Gestion des erreurs

/**
 * @param int    $err_no      错误代码
 * @param string $err_msg  错误信息
 * @param string $err_file    错误文件
 * @param int    $err_line     错误行号
 * @return string
 */
function errorHandler($err_no = 0, $err_msg = '', $err_file = '', $err_line = 0)
{
    $log = [
        '['.date('Y-m-d h-i-s').']',
        '|',
        $err_no,
        '|',
        $err_msg,
        '|',
        $err_file,
        '|',
        $err_line
    ];
    $log_path = './test.txt';
    error_log(implode(' ',$log)."\r\n",3, $log_path);
}
  • Détecter les erreurs fatales

function fatalErrorHandler() {
    $e = error_get_last();

    var_export($e);
    switch ($e['type']) {
        case 1:
            errorHandler($e['type'], $e['message'], $e['file'], $e['line']);
            break;
    }
}
class DemoClass_1
{
    public function index()
    {
        //这里发生一个警告错误,出发errorHandler
        echo $undefinedVarible;
    }
}
  • Une erreur d'avertissement s'est produite ici et a été capturée par errorHandler

$demo_1 = new DemoClass_1();
$demo_1->index();
  • Une erreur fatale se produit et le script s'arrête et déclenche fatalErrorHandler

$demo_2 = new DemoClass_2();
$demo_2->index();

Après avoir ouvert test.txt, le résultat est :

[2018-06-12 05-49-11] | 8 | Undefined variable: undefinedVarible | /Users/darry/htdocs/test.php | 57
[2018-06-12 05-49-11] | 1 | Uncaught Error: Class 'DemoClass_2' not found in /Users/darry/htdocs/test.php:67
Stack trace:
#0 {main}
  thrown | /Users/darry/htdocs/test.php | 67

Ce qui précède représente l'intégralité du contenu de cet article.J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Configuration de l'authentification bidirectionnelle rapide Nginx SSL (script)

Récursion basée sur la structure de données PHP

À propos de l'utilisation du comportement thinkphp

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