php与apache的各种报错情况整理

编    写:盛星衡
时    间:2014-09-24
功    能:对php与apache的各种报错情况整理

php运行的报错,错误日志涉及下面几个参数的设置:
display_errors//on:页面显示错误提示,off页面屏蔽错误提示
log_errors,//on记录错误日志,off不记录错误日志
error_reporting,//设定报错级别

开发环境下一般把display_errors设置为on,error_reporting设置为8191,也就是E_ALL,宽松点可以设置为7,也可以写成error_reporting(E_ERROR | E_WARNING | E_PARSE);
一般开发模式会开warning提示,可以帮助开发人员找到一些边界处理的失误;

线上项目设置为display_errors设置为off,error_reporting设置为5,log_errors设置为on,并且apache设置log文件地址。

常见问题:
1、开发模式下设置了开启报错,但是就是没有错误提示?
这种问题一般是因为php.ini中把错误提示关闭了,程序中虽然开启了错误提示,但是语法错误,程序中设置不起效,导致没有错误提示。

2、php配置文件中把报错关闭了,没有权限对php配置文件进行修改,然后写了很长一段代码,语法错误,怎么看到错误提示?
这种情况在线上项目的调试会遇到,可以另写一个php文件,在文件中把报错开启,然后include语法错误的文件,就可以看到错误提示了。
常见的应用就是在apache上做rewrite,项目下的所有访问都统一到一个入口文件中,报错在入口文件当中配置,开启,关闭报错都比较方便。
在inc/gloal.php进行配置,然后引用,在文件本身语法错误的情况下,配置失效。

3、线上项目明明设置为把错误记录到日志中,php配置文件中设置了关闭页面报错,为什么还是把错误提示显示在页面上了?
在设置记录日志的情况下,apache配置中没有设置log文件或者没有权限操作log文件时,错误日志会直接显示在页面上。

4、如果php.ini中设置了不显示warning报错,apache重启之后,还是没用,可能是因为apache中设置了phpvalue error_reporting导致
参考文档:
http://php.net/manual/zh/errorfunc.configuration.php
http://www.jb51.net/article/31499.htm
http://www.w3school.com.cn/php/func_error_reporting.asp

发表评论