<?php ini_set('display_errors', 'On'); // 将display_errors设置为On error_reporting(-1); // 报告所有错误 /** * shutdown回调函数 * * @return void */ function shutdown_function() { $error = error_get_last(); // 若无错误则返回NULL if (is_array($error) && isset($error['type'])) { $errtype = "Unknown error {$error['type']}"; if ($error['type'] === E_ERROR) { // E_ERROR === 1 $errtype = 'Fatal error'; } echo "🐵 {$errtype}: {$error['message']} in {$error['file']} on line {$error['line']} 🐵"; } } register_shutdown_function('shutdown_function'); // 这里调用未定义函数,系统会报Fatal error test(); // 🐵 Fatal error: ……此处省略内容若干…… on line 26 🐵 //========== 总结 ==========// // 1、脚本执行完成、调用exit()、程序报Fatal error这些情况都会触发回调,所以需要通过error_get_last()判断错误情况。 // 2、若程序出现Fatal error,那么系统会先执行自己的错误处理程序(在页面输出错误信息),然后才调用开发者注册的回调函数。 // 3、register_shutdown_function()主要用于生产环境记录Fatal error,因为生产环境必须时刻屏蔽一切错误信息输出,如果生产环境出现 // Fatal error页面只会报500错误,开发者不知道发生错误的文件和行号就会很难排错,而register_shutdown_function()则可以帮开发者 // 把详细的错误信息记录下来。
Copyright © 2023 码农人生. All Rights Reserved