记录PHP错误日志 display_errors与log_errors的区别


Posted in PHP onOctober 09, 2012

display_errors
错误回显,一般常用语开发模式,但是很多应用在正式环境中也忘记了关闭此选项。错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利。推荐关闭此选项。
display_errors = On
开启状态下,若出现错误,则报错,出现错误提示
dispaly_errors = Off
关闭状态下,若出现错误,则提示:服务器错误。但是不会出现错误提示

log_errors
在正式环境下用这个就行了,把错误信息记录在日志里。正好可以关闭错误回显。

对于PHP开发人员来说,一旦某个产品投入使用,那么第一件事就是应该将display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。

某个产品投入使用后,难免会有错误信息,那么如何记录这些对开发人员非常有用的信息呢?
将PHP的log_errors开启即可,默认是记录到WEB服务器的日志文件里,比如Apache的error.log文件。
当然也可以记录错误日志到指定的文件中。

# vim /etc/php.inidisplay_errors = Off 
log_errors = On 
error_log = /var/log/php-error.log

另外也可以设定error_log = syslog,使这些错误信息记录到操作系统的日志里。
display_errors = Off //display中文意思是显示所以display_error=off的意思就是不显示错误了!
error_reporting 设定错误讯息回报的等级
2047我记得应该是E_ALL。
php.ini 文件中有许多配置设置。您应当已经设置好自己的 php.ini 文件并把它放在合适的目录中,就像在 Linux 上安装 PHP 和 Apache 2 的文档说明中所示的那样(请参阅 参考资料)。在调试 PHP 应用程序时,应当知道两个配置变量。下面是这两个变量及其默认值:
display_errors = Off //关闭所有错误信息,为ON时为显示所有错误信息。
error_reporting = E_ALL
E_ALL能从不良编码实践到无害提示到出错的所有信息。E_ALL 对于开发过程来说有点太细,因为它在屏幕上为一些小事(例如变量未初始化)也显示提示,会搞糟浏览器的输出
所以不建议使用2047,最好把默认值改为:error_reporting = E_ALL & ~E_NOTICE

PHP.ini中display_errors = Off失效的解决

问题:
PHP设置文件php.ini中明明已经设置display_errors = Off,但是在运行过程中,网页上还是会出现错误信息。
解决:
经查log_errors= On,据官方的说法,当这个log_errors设置为On,那么必须指定error_log文件,如果没指定或者指定的文件没有权限写入,那么照样会输出到正常的输出渠道,那么也就使得display_errors 这个指定的Off失效,错误信息还是打印了出来。于是将log_errors = Off,问题就解决了。

经常见到error_reporting(7)直意为:设定错误讯息回报的等级。

value constant
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT
然而7=1+2+4
就是出错时显示1 E_ERROR 2 E_WARNING 4 E_PARSE

<?php 
//禁用错误报告 
error_reporting(0); 
//报告运行时错误 
error_reporting(E_ERROR | E_WARNING | E_PARSE); 
//报告所有错误 
error_reporting(E_ALL); 
?>
PHP 相关文章推荐
PR值查询 | PageRank 查询
Dec 20 PHP
用header 发送cookie的php代码
Mar 16 PHP
php 接口类与抽象类的实际作用
Nov 26 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
php筛选不存在的图片资源
Apr 28 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
Yii快速入门经典教程
Dec 28 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 #PHP
php排序算法(冒泡排序,快速排序)
Oct 09 #PHP
php全排列递归算法代码
Oct 09 #PHP
php列出一个目录下的所有文件的代码
Oct 09 #PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 #PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 #PHP
php随机输出名人名言的代码
Oct 07 #PHP
You might like
php设计模式 Strategy(策略模式)
2011/06/26 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
Node.js实现文件上传
2016/07/05 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
原生js实现放大镜组件
2021/01/22 Javascript
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
Python文件处理
2016/02/29 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
Python模块文件结构代码详解
2018/02/03 Python
详解python做UI界面的方法
2019/02/27 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
linux面试题参考答案(7)
2014/07/24 面试题
IBatis持久层技术
2016/07/18 面试题
专业毕业生个性的自我评价
2013/10/03 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
奖金申请报告模板
2015/05/15 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android