如何防止Nginx从FastCGI/PHP-FPM捕获错误?

如何防止Nginx从FastCGI/PHP-FPM捕获错误?,php,nginx,fastcgi,Php,Nginx,Fastcgi,我在FastCGI PHP-FPM上使用Nginx 1.8.1作为PHP5.6.20前面的反向代理,我发现所有来自PHP的通知/警告/错误日志也作为错误记录在Nginx中。有没有办法防止此类日志传播到Nginx的日志?我希望他们只记录在PHP的日志文件 下面是一个例子: [29-Apr-2016 22:23:10]警告:[pool www]child 20对stderr说:注意:PHP消息:PHP警告:phpinfo:依赖系统的时区设置是不安全的。您需要使用date.timezone设置或dat

我在FastCGI PHP-FPM上使用Nginx 1.8.1作为PHP5.6.20前面的反向代理,我发现所有来自PHP的通知/警告/错误日志也作为错误记录在Nginx中。有没有办法防止此类日志传播到Nginx的日志?我希望他们只记录在PHP的日志文件

下面是一个例子:

[29-Apr-2016 22:23:10]警告:[pool www]child 20对stderr说:注意:PHP消息:PHP警告:phpinfo:依赖系统的时区设置是不安全的。您需要使用date.timezone设置或date\u default\u timezone\u set功能。如果您使用了这些方法中的任何一种,但仍然收到此警告,则很可能是您拼错了时区标识符。我们暂时选择了时区“UTC”,但请设置date.timezone以选择您的时区。在第2行的/opt/web app/index.php中

该日志已作为错误添加到Nginx的日志文件中:

2016/04/29 22:23:10[错误]60:1发送到stderr:PHP的FastCGI消息:PHP警告:phpinfo:依赖系统的时区设置是不安全的。您*需要使用date.timezone设置或date\u default\u timezone\u set功能。如果您使用了这些方法中的任何一种,但仍然收到此警告,则很可能是您拼错了时区标识符。我们暂时选择了时区“UTC”,但请设置date.timezone以选择您的时区。在第2行的/opt/web app/index.php中,从上游读取响应头,客户端:172.18.0.1,服务器:,请求:GET/favicon.ico HTTP/1.1,上游:fastcgi://172.18.0.2:9000,主机:localhost:8080,推荐人:

是否可以对或的非常简单的配置文件进行任何更改?

将catch\u workers\u输出更改为no应该可以实现以下目的:

catch_workers_output = no

这将允许php按配置记录消息,但会阻止这些消息通过fastcgi连接传递到nginx。

我一直在研究相同的问题,经过一些尝试和错误后,对我有效的方法是将以下内容添加到php fpm池配置中。我假设可以通过其他方式设置相同的标志,例如主php.ini文件


相关文档在这里:

不幸的是,这只会抑制工作人员的所有日志。它们甚至不会被放入PHP错误文件中。请尝试更改错误日志指令make is a file的值,例如/var/log/PHP-fpm.www.log,其中catch\u workers\u output.error\u log的原始值已经设置并正常工作。我在测试catch_workers_输出后写了上面的评论,包括yes和no。这是我的配置文件,顺便说一下:我发现将catch_workers_输出设置为no会抑制来自FPM的日志,但它们仍然出现在nginx日志中,相反的效果是来自FPM的所需日志可见,nginx fastcgi logs SuppressedId你明白了吗?我在nginx上,我有通过php error\u log方法传递的自定义消息。但是,当它到达nginx日志时,它会在一些日志的开头将FastCGI发送到stderr中,即使自定义消息是调试类型。如果你已经弄明白了,我会非常感谢你的意见。谢谢
php_admin_flag[fastcgi.logging] = off