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