error_reporting函数引起的error_log配置失效的问题

Posted dongruiha

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error_reporting函数引起的error_log配置失效的问题相关的知识,希望对你有一定的参考价值。

由于项目代码中大量使用了error_reporting(0);导致php.ini中的error_log失效,不记录错误日志,

导致调试起来非常不便,耗费大量的时间,所以在php.ini的配置中禁止掉error_reporting 函数!

 

nginx是一个web服务器,因此nginx的access日志只有对访问页面的记录,不会有php 的 error log信息。

nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog

原因是php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到/dev/null,所以我们在nginx的error log 和php-fpm的errorlog都看不到php的错误日志。

调试起来就很痛苦了。解决nginx下php-fpm不记录php错误日志的办法:

1.修改php-fpm.conf中配置 没有则增加
catch_workers_output = yes
error_log = log/error_log

2.修改php.ini中配置,没有则增加
log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE

3.重启php-fpm,
当PHP执行错误时就能看到错误日志在"/usr/local/lnmp/php/var/log/error_log"中了

 

以上是关于error_reporting函数引起的error_log配置失效的问题的主要内容,如果未能解决你的问题,请参考以下文章

在PHP中error_reporting这个函数有什么作用?

PHP中 error_reporting 这个函数有什么作用?

PHP error_reporting() 错误控制函数功能详解

PHP error_reporting() 错误控制函数功能详解

error_reporting(0) 隐藏常规输出?奇怪的行为

error_reporting() 和 ini_set('error_reporting') 的区别?