详解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 相关文章推荐
如何正确理解PHP的错误信息
Oct 09 PHP
PHP下几种删除目录的方法总结
Aug 19 PHP
php 编写安全的代码时容易犯的错误小结
May 20 PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 PHP
php eval函数一句话木马代码
May 21 PHP
详解php的socket通信
Aug 11 PHP
PHP内存使用情况如何获取
Oct 10 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
php根据命令行参数生成配置文件详解
Mar 15 PHP
mongodb和php的用法详解
Mar 25 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
用PHP制作静态网站的模板框架
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
javascript 常用方法总结
2009/06/03 Javascript
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
python实现从web抓取文档的方法
2014/09/26 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
python系列 文件操作的代码
2019/10/06 Python
Python之多进程与多线程的使用
2021/02/23 Python
SQL中where和having的区别
2012/06/17 面试题
材料化学应届生求职信
2013/10/09 职场文书
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
学生处主任岗位职责
2013/12/01 职场文书
情侣吵架检讨书
2014/02/05 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
总经理年会致辞
2015/07/29 职场文书
python中的None与NULL用法说明
2021/05/25 Python
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android