扫码关注官方订阅号
我可以使用 set_error_handler() 来捕获大多数 PHP 错误,但它不适用于致命 (E_ERROR) 错误,例如调用不存在的函数。还有其他方法可以捕获这些错误吗?
set_error_handler()
E_ERROR
我正在尝试调用 mail() 来解决所有错误,并且正在运行 PHP 5.2.3。
mail()
使用 register_shutdown_function 记录致命错误,这需要 PHP 5.2+:
register_shutdown_function
register_shutdown_function( "fatal_handler" ); function fatal_handler() { $errfile = "unknown file"; $errstr = "shutdown"; $errno = E_CORE_ERROR; $errline = 0; $error = error_get_last(); if($error !== NULL) { $errno = $error["type"]; $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; error_mail(format_error( $errno, $errstr, $errfile, $errline)); } }
您必须定义 error_mail 和 format_error 函数。例如:
error_mail
format_error
function format_error( $errno, $errstr, $errfile, $errline ) { $trace = print_r( debug_backtrace( false ), true ); $content = "
$errstr
$errno
$trace
使用Swift Mailer编写error_mail函数。
另请参阅:
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
使用
register_shutdown_function记录致命错误,这需要 PHP 5.2+:register_shutdown_function( "fatal_handler" ); function fatal_handler() { $errfile = "unknown file"; $errstr = "shutdown"; $errno = E_CORE_ERROR; $errline = 0; $error = error_get_last(); if($error !== NULL) { $errno = $error["type"]; $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; error_mail(format_error( $errno, $errstr, $errfile, $errline)); } }您必须定义
error_mail和format_error函数。例如:function format_error( $errno, $errstr, $errfile, $errline ) { $trace = print_r( debug_backtrace( false ), true ); $content = "使用Swift Mailer编写
error_mail函数。另请参阅: