首页 PHP常见问题

php异常及错误信息捕获并记录日志实现方法全解析

From: http://t.zoukankan.com/jjxhp-p-10244598.html
//禁止错误输出 error_reporting(0); //设置错误处理器 set_error_handler('errorHandler'); //在脚本结束时运行的函数 register_shutdown_function('fatalErrorHandler'); /** * 错误处理 * @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 = '/data/mi/test.txt'; error_log(implode(' ',$log)." ",3, $log_path); //echo implode(' ',$log).""; } /** * 捕捉致命错误 * @return string */ function fatalErrorHandler() { $e = error_get_last(); switch ($e['type']) { case 1: errorHandler($e['type'], $e['message'], $e['file'], $e['line']); break; } } class DemoClass_1 { public function index() { //这里发生一个警告错误,出发errorHandler echo $undefinedVarible; } } $demo_1 = new DemoClass_1(); //这里发生一个警告错误,被errorHandler 捕获 $demo_1->index(); //发生致命错误,脚本停止运行触发 fatalErrorHandler $demo_2 = new DemoClass_2(); $demo_2->index();