display errors php,PHP 的display_errors 分析

很少原创: 有不对的地方一定要指出来呀!

PHP配置文件中的error_reporting和display_errors两个选项让不少人迷惑,以为报告了就显示,不报告就不显示,干嘛还要使用display_errors呢,如果允许报告错误,又不让显示错误,那将又是什么状态呢? 欲知其中详情,且听我慢慢道来:

实例1.

[root@ljj junjie2]# php -i | grep display_errors

display_errors => Off => Off

[root@ljj junjie2]# php -r "sdfasdf();" 2>/dev/null

[root@ljj junjie2]# php -r "sdfasdf();"

PHP Fatal error: Call to undefined function sdfasdf() in Command line code on line 1

[root@ljj junjie2]#

说明:不允许显示错误时,错误是输出到标准错误的。 这时很正常的呀,没有什么可议论的。

实例2.

[root@ljj junjie2]# php -i | grep display_errors

display_errors => STDOUT => STDOUT

[root@ljj junjie2]# php -r "sdafasd();" 2>/dev/null

Fatal error: Call to undefined function sdafasd() in Command line code on line 1

[root@ljj junjie2]# php -r "sdafasd();"

PHP Fatal error: Call to undefined function sdafasd() in Command line code on line 1

Fatal error: Call to undefined function sdafasd() in Command line code on line 1

[root@ljj junjie2]#

说明: 允许显示错误时,很显然display_errors 的值为STDOUT,经过确认,就是说display_errors 打开的话就是把错误输出到标准输出而不是标准错误了

对于命令行来讲,终端的标准输出与标准错误都是屏幕,从哪里输出都是显示,我们直观上是看不出来的,但是php放到apache中就不一样了,display_errors 设置为on,网页上就能显示php的错误,为off时就不显示php的错误,好像display_errors的设置是给apache看的,其实不是的,apache并不关心php是怎么设置的,apache只是把标准错误写入日志,把标准输出写到网页,所以这就和php的错误输出到哪里关系到一起了。

补充: 关于log_errors 的说明

是否记录错误到日志文件与是否显示(display_errors)是两回事

都写错了,display_error 就是输出或不输出错误,或输出到哪里;

apachce的配置应该是:

display_error = off

log_errors = on

然后 error_log 不要设置

—————————————————–

log_errors = on

记录错误到error_log 指定的文件中;注意:

1. 如果不指定error_log 文件将不记录,直接输出到标准错误

2. 如果当前用户对error_log 没有写权限,也将直接输出到标准错误

log_errors=off

即使error_log 指定了文件,也不往里面记录错误

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值