记录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 相关文章推荐
无数据库的详细域名查询程序PHP版(4)
Oct 09 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
php中in_array函数用法分析
Nov 15 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
适合PHP初学者阅读的4本经典书籍
Sep 23 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
laravel7学习之无限级分类的最新实现方法
Sep 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上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
javascript 面向对象编程基础 多态
2009/08/21 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
jQuery动态添加
2016/04/07 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
美国网上花店:JustFlowers
2017/02/12 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
测试工程师职业规划书
2014/02/06 职场文书
销售团队激励口号
2014/06/06 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
转学证明范本
2015/06/19 职场文书
小学生读书笔记
2015/07/01 职场文书