详解PHP错误日志的获取方法


Posted in PHP onJuly 20, 2015

在PHP中错误日志的获取方法有很多种,下面我给大家简单介绍下遇到此类问题如何解决,下面通过代码给大家展示下,希望能够帮助到大家。

<?php
error_reporting (0);
register_shutdown_function($err = 'my_error_handler') OR set_error_handler($err,E_ALL); // 同时注册两个函数.
// 函数参数错误
$original = unserialize ( array(423142,2134234));
// 不可对0除
echo 1/0;
// 不存在的数组索引
echo $_GET['aa'];
// 不存在的常量
PHP_E;
// 不存在的变量
echo $var;
// 函数参数错误
strlen(array(2434));
// 函数参数错误
md5(array(1));
// 用户自定义错误
trigger_error('safdds',E_USER_NOTICE);
// 不存在的函数 php中断
// tes();
// 不存在的方法 php中断
$ts = new afsd();
function my_error_handler($errno=0 ,$errstr=0 , $errfile=0 ,$errline=0){
 if($errno && $errfile){
  if(true){
   $earr = array();
   $earr['type'] = $errno;
   $earr['message'] = $errstr;
   $earr['file'] = $errfile;
   $earr['line'] = $errline;
  }
 }else{
  $earr = error_get_last();
 }
 echo '<pre>';
 print_r($earr);
 return array();
}

对于php错误, 我们一定要认识清楚, 类型分几种, 什么时候触发, 返回值是什么.

如果不区分警告, 错误, 建议,提示等细类型种类, 那我们可以理解php错误类型共有两种:

   一种是强制中断程序错误.  如错误, 方法不存在等. 内存不足, 超时

   一种是非中断式错误. 如警告, 提示这些

其中获取中断程序错误需要使用register_shutdown_function函数, 注册一个内存函数, 然后里面取得错误信息, 这种方法仅能获取到首次的错误行, 如多个不存在的函数时, 它只能获取到首次的那个错误. 这其实也有好处, 你修复一个, 它就会移至下一个.

非中断式错误, 如果用:register_shutdown_function, 那会变得异常难操作, 仅仅能获取首次的提示或者警告, 这时我们需要set_error_handler, 每一次触有error level constants, 都会调用错误函数一次, 也就可以在里面获取错误日志.  不过此函数会承接 error_get_last 函数, 所以你会发现error_get_last返回为空, 全部由参数传入了.

两个函数一起运用, 即可获取到程序的99%的错误, 这对于php程序来说, 算是雪中送打火机了.

试试运行上面的示例吧.

通过代码和文字相结合对PHP中错误日志的获取方法的整理,希望对大家在今后的工作中遇到此类问题有所帮助。

PHP 相关文章推荐
Smarty模板快速入门
Jan 04 PHP
PHP一些常用的正则表达式字符的一些转换
Jul 29 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
Zend Framework基于Command命令行建立ZF项目的方法
Feb 18 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
简单实现php上传文件功能
Sep 21 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 PHP
php实现网站顶踩功能的完整前端代码
Jul 19 #PHP
php实现上传图片文件代码
Jul 19 #PHP
54个提高PHP程序运行效率的方法
Jul 19 #PHP
浅谈COOKIE和SESSION区别
Jul 19 #PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 #PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 #PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 #PHP
You might like
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
python实现简单登陆流程的方法
2018/04/22 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
销售副总经理岗位职责
2013/12/11 职场文书
12岁生日感言
2014/01/21 职场文书
超市采购员岗位职责
2014/02/01 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
心理健康活动总结
2014/04/30 职场文书
市场营销工作计划书
2014/05/06 职场文书
教师节活动总结
2014/08/29 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
2014年学生会工作总结
2014/11/07 职场文书
优秀党员申报材料
2014/12/18 职场文书
谢师宴家长致辞
2015/07/27 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python