"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso capturar erros fatais em PHP usando `register_shutdown_function()`?

Como posso capturar erros fatais em PHP usando `register_shutdown_function()`?

Publicado em 2025-01-24
Navegar:111

How Can I Catch Fatal Errors in PHP Using `register_shutdown_function()`?

capturando erros fatais do PHP com register_shutdown_function

em php, set_error_handler () é útil para lidar com a maioria dos erros. No entanto, ele não pode capturar erros fatais, como os causados ​​pela chamada de funções inexistentes. Para abordar essa limitação, podemos utilizar o Register_shutdown_function. É preciso uma função definida pelo usuário como um parâmetro. Esta função pode capturar quaisquer erros não tratados que ocorreram durante a execução. função fatal_handler () { $ error = error_get_last (); if ($ error! == null) { // Extrair informações de erro $ errno = $ error ["type"]; $ errfile = $ error ["arquivo"]; $ errline = $ error ["line"]; $ errstr = $ error ["mensagem"]; // Envie detalhes de erro por e -mail usando error_mail error_mail (format_error ($ errno, $ errstr, $ errfile, $ errline); } }

funções adicionais

No código acima, assumimos a existência de duas funções adicionais: error_mail e format_error. Veja como você pode defini -los:

register_shutdown_function("fatal_handler");

function fatal_handler() {
    $error = error_get_last();
    if ($error !== NULL) {
        // Extract error information
        $errno = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr = $error["message"];
        // Send error details via email using error_mail
        error_mail(format_error($errno, $errstr, $errfile, $errline));
    }
}

função error_mail ($ content) { // Use o Swift Mailer ou outra biblioteca de e-mail para enviar o email de erro }

Notas adicionais

function format_error($errno, $errstr, $errfile, $errline) {
    $trace = print_r(debug_backtrace(false), true);
    $content = "..."; // Format the error message as needed
    return $content;
}
registr_shutdown_function requer php 5.2 ou mais tarde. &&&]
function error_mail($content) {
    // Use Swift Mailer or other mail-sending library to send the error email
}

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3