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

 更新时间:2020年07月01日 11:50:33   投稿:junjie  
最近在本地搭建的LNMP的开发环境。为了开发的时候不影响前端的正常开发就屏蔽的PHP里面php.ini中的一些错误提示。但是这样一来,就影响到了后端开发的一些问题比如不能及时调试开发中的一些问题

今天一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'

最后看看效果:

相关文章

  • win10安装配置nginx的过程

    win10安装配置nginx的过程

    这篇文章主要介绍了win10安装配置nginx的过程,帮助大家更好的理解和使用nginx服务器,感兴趣的朋友可以了解下
    2020-10-10
  • Nginx中使用gzip_http_version解决CDN只支持http 1.0问题

    Nginx中使用gzip_http_version解决CDN只支持http 1.0问题

    这篇文章主要介绍了Nginx中使用gzip_http_version解决CDN只支持http 1.0问题,问题原因是在Header信息中看到Transfer-Encoding: chunked,使用本文方法就可以解决这个问题,需要的朋友可以参考下
    2014-09-09
  • Nginx进行域名重写和泛域名解析配置的方法

    Nginx进行域名重写和泛域名解析配置的方法

    这篇文章主要介绍了Nginx进行域名重写和泛域名解析配置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • nginx处理http请求实现过程解析

    nginx处理http请求实现过程解析

    这篇文章主要介绍了nginx处理http请求实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等)

    修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等)

    这篇文章主要介绍了修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等),需要的朋友可以参考下
    2016-03-03
  • Nginx中配置过滤爬虫的User-Agent的简单方法

    Nginx中配置过滤爬虫的User-Agent的简单方法

    这篇文章主要介绍了Nginx中配置过滤爬虫的User-Agent的简单方法,文中罗列了一些常用搜索引擎的爬虫名称以免造成不必要的过滤,需要的朋友可以参考下
    2016-01-01
  • nginx lua集成kafka的实现方法

    nginx lua集成kafka的实现方法

    这篇文章主要介绍了nginx lua集成kafka的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Nginx中的用户认证配置及阻止用户使用代理访问的方法

    Nginx中的用户认证配置及阻止用户使用代理访问的方法

    这篇文章主要介绍了Nginx中的用户认证配置及阻止用户使用代理访问的方法,用户认证部分用到了自带的ngx_http_auth_basic_module模块,需要的朋友可以参考下
    2016-01-01
  • Nginx代理axios请求以及注意事项详解

    Nginx代理axios请求以及注意事项详解

    这篇文章主要给大家介绍了关于Nginx代理axios请求以及注意事项的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Nginx+Windows负载均衡配置方法

    Nginx+Windows负载均衡配置方法

    Nginx负载均衡如何才能实现呢?这个问题有很多的程序员都希望知道,下面我们就向大家详细的介绍有关Nginx负载均衡的信息
    2012-11-11

最新评论