实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法

 更新时间:2020年07月01日 11:50:33   投稿:junjie  
最近在本地搭建的LNMP的开发环境。为了开发的时候不影响前端的正常开发就屏蔽的PHP里面php.ini中的一些错误提示。但是这样一来,就影响到了后端开发的一些问题比如不能及时调试开发中的一些问题
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

今天一PHP程序运行出现问题,想看看错误信息,但是Nginx环境如何查看PHP错误信息?常规做法是看log日志文件,但是首先要做的是能让PHP把错误信息输出到log文件里。原以为很简单,直接在php.ini里设置下log日志文件路径即可,但测试后发现这样做是不行的。那问题在哪?

通过查阅了一些相关的文章资料,原来主要根源在于php-fpm的配置文件php-fpm.conf。

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

要解决这一问题,只需设置下php-fpm.conf即可。我使用的关键代码如下:

[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

[www]
; 下面这句不能少,记录PHP执行错误日志
catch_workers_output = yes

解释:

1、error_log 是定义日志文件路径

2、log_level = notice 不能少

3、catch_workers_output = yes 不能少

通过这样设置后,php的错误信息就会直接写入error_log定义的日志文件里了。

重启php服务,方法:

service php-fpm restart

试试有无效果?

上述方法无效?再按下面方法设置php.ini

网上不少文章说到还要设置php.ini的error_log路径,但我测试发现,php.ini的error_log路径设置是没有意义的,这就解释了为什么一开始我只设置php.ini日志输出路径却没有效果的原因。也许是别人的php-fpm.conf设置与我不同,造成还需要设置php.ini的error_log路径。网友们如果发现我前面提到的设置方法不可行,那么可以再设置一下php.ini,关键代码是如下三行:

log_errors = On
error_log = "/usr/local/php/var/log/php_errors.log"
error_reporting = E_ALL & ~E_NOTICE

解释:

1、log_errors = On 不能少

2、error_log 设置日志文件路径

3、error_reporting 的值设为 E_ALL & ~E_NOTICE

下面是其他网友的补充

nginx与apache不一样,在apache中可以直接指定php的错误日志,那样在php执行中的错误信息就直接输入到php的错误日志中,可以方便查询。

在nginx中事情就变成了这样: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中的配置,如果没有请增加:

[global]
; Note: the default prefix is /usr/local/php/var
error_log = log/php_error_log
[www]
catch_workers_output = yes

2.修改php.ini中配置,没有则增加:

log_errors = On
error_log = "/usr/local/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE

3.重启php-fpm

当PHP执行错误时就能看到错误日志在”/usr/local/lnmp/php/var/log/php_error_log”中了

如果出现:

[root@localhost etc]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm [17-Apr-2014 18:40:52] ERROR: [/usr/local/php/etc/php-fpm.conf:5] unknown entry 'catch_workers_
[17-Apr-2014 18:40:52] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[17-Apr-2014 18:40:52] ERROR: FPM initialization failed
 failed

那请在第一步的时候,认真将配置写入相对应的组中,不然就出现上面的:

复制代码 代码如下:
ERROR: [/usr/local/php/etc/php-fpm.conf:5] unknown entry ‘catch_workers_output'

最后看看效果:

相关文章

  • Nginx配置React项目Url后直接输入路由路径时报404问题的解决

    Nginx配置React项目Url后直接输入路由路径时报404问题的解决

    这篇文章主要给大家介绍了关于Nginx配置React项目Url后面直接输入路由路径时报404问题的解决方法,文中通过示例代码将解决的方法介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • Nginx显示500错误的原因以及解决方法

    Nginx显示500错误的原因以及解决方法

    nginx出现500错误,不会显示具体错误信息,要到日志文件里面去看,下面这篇文章主要给大家介绍了关于Nginx显示500错误的原因以及解决方法的相关资料,需要的朋友可以参考下
    2022-12-12
  • Nginx 如何限制访问频率,下载速率和并发连接数的方法

    Nginx 如何限制访问频率,下载速率和并发连接数的方法

    这篇文章主要介绍了Nginx 如何限制访问频率,下载速率和并发连接数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 在Nginx服务器中配置针对TCP的负载均衡的方法

    在Nginx服务器中配置针对TCP的负载均衡的方法

    这篇文章主要介绍了在Nginx服务器中配置针对TCP的负载均衡的方法,另外还介绍了TCP负载均衡的执行原理,需要的朋友可以参考下
    2015-12-12
  • Nginx配置PATHINFO隐藏thinkphp index.php

    Nginx配置PATHINFO隐藏thinkphp index.php

    这篇文章主要介绍了Nginx配置PATHINFO隐藏thinkphp index.php,本文直接给出配置示例,需要的朋友可以参考下
    2015-07-07
  • nginx全局变量整理小结

    nginx全局变量整理小结

    nginx全局变量整理小结,方便需要的朋友
    2012-11-11
  • Nginx负载均衡(架构之路)详解

    Nginx负载均衡(架构之路)详解

    这篇文章主要为大家详细介绍了Nginx负载均衡的相关资料,如何配置三台服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • nginx 如何实现读写限流的方法

    nginx 如何实现读写限流的方法

    这篇文章主要介绍了nginx 如何实现读写限流的方法的相关资料,这里提供实例代码及如何配置,需要的朋友可以参考下
    2016-12-12
  • Nginx/Openresty中启用http2支持的方法教程

    Nginx/Openresty中启用http2支持的方法教程

    Openresty/Nginx默认是不支持http2的,需要将http2模块编译进应用中。这篇文章主要给大家介绍了关于在Nginx/Openresty中启用http2支持的方法教程,文中介绍的非常详细,对大家具有一的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • 深入理解Nginx之error_page模块的使用

    深入理解Nginx之error_page模块的使用

    error_page是nginx一个重要的指令,作用是定制化服务器错误页面,本文主要介绍了Nginx之error_page模块的使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论

?


http://www.vxiaotou.com