修改php.ini以达到屏蔽错误信息并记录日志


Posted in PHP onJune 16, 2013

那是因为php.ini中关闭了错误显示,将错误写成了文件,这是人为设置的结果,display_errors =on就好了。
不过不显示错误倒安全点,建议调试时打开,然后提供服务时关闭。

提供一点资料给你:

display_errors = On

php缺省是打开错误信息显示的,我们把它改为:

display_errors = Off

关闭错误显示后,php函数执行错误的信息将不会再显示给用户,这样能在一定程度上防止攻击者从错误信息得知脚本的物理位置,以及一些其它有用的信息,起码给攻击者的黑箱检测造成一定的障碍。这些错误信息可能对我们自己有用,可以让它写到指定文件中去,那么修改以下:

log_errors = Off

改为:

log_errors = On

以及指定文件,找到下面这行:

;error_log = filename

去掉前面的;注释,把filename改为指定文件,如/usr/local/apache/logs/php_error.log

error_log = /usr/local/apache/logs/php_error.log

这样所有的错误都会写到php_error.log文件里。

====================================

error_reporting
配置错误信息回报的等级。
语法: int error_reporting(int [level]);
返回值: 整数
函数种类: PHP 系统功能

本函数用来配置错误信息回报的等级,参数 level 是一个整数的位遮罩 (bitmask),见下表。
遮罩值 表示名称
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING

E_NOTICE 表示一般情形不记录,只有程序有错误情形时才用到,例如企图存取一个不存在的变量,或是呼叫 stat() 函数检视不存在的文件。
E_WARNING 通常都会显示出来,但不会中断程序的执行。这对除错很有效。例如:用有问题的正则表达式呼叫 ereg()。
E_ERROR 通常会显示出来,亦会中断程序执行。意即用这个遮罩无法追查到内存配置或其它的错误。
E_PARSE 从语法中解析错误。
E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。
————————————
额外:
1.
php文件中
error_reporting(7) 其中的7 就是 1+2+4,也就是回报 1 E_ERROR 2 E_WARNING 4 E_PARSE
2.
php.ini中
display_errors = Off //默认是关闭错误提示
error_reporting = E_ALL //显示从不良编码实践到无害提示到出错的所有信息,由于回报的信息太细化了,包括了无害信息,为了在开发过程中能看到实际的提示,建议配置为 error_reporting = E_ALL & ~E_NOTICE

PHP 相关文章推荐
PHP实时显示输出
Oct 02 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
Feb 14 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
php jsonp单引号转义
Nov 23 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 PHP
php时间戳转换代码详解
Aug 04 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 PHP
php fsockopen伪造post与get方法的详解
Jun 14 #PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 #PHP
PHP可变函数的使用详解
Jun 14 #PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 #PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 #PHP
利用curl 多线程 模拟 并发的详解
Jun 14 #PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 #PHP
You might like
php mysql数据库操作类
2008/06/04 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
单利模式及python实现方式详解
2018/03/20 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
django页面跳转问题及注意事项
2019/07/18 Python
python和go语言的区别是什么
2020/07/20 Python
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
2014年生活老师工作总结
2014/12/23 职场文书
典型事迹材料范文
2014/12/29 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技