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

时间:2016-04-30 11:10:40

标签: php nginx fastcgi

我通过FastCGI(PHP-FPM)在PHP 5.6.20前面使用Nginx 1.8.1作为反向代理,并且我发现PHP中的所有通知/警告/错误日志也正在登录Nginx作为错误。有没有办法阻止这些日志传播到Nginx'日志?我希望他们只登录PHP的日志文件。

以下是一个例子:

  

[2016年4月29日22:23:10]警告:[pool www] child 20对stderr说:"注意:PHP消息:PHP警告:phpinfo():依赖它是不安全的系统的时区设置。您需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们选择了时区' UTC'目前,请设置date.timezone以选择您的时区。在/opt/web-app/index.php第2行"

同样的日志被添加到Nginx'将日志文件作为错误:

  

2016/04/29 22:23:10 [错误] 6#0:1 FastCGI发送到stderr:" PHP消息:PHP警告:phpinfo():依赖系统并不安全# 39; s时区设置。您需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们选择了时区' UTC'目前,请设置date.timezone以选择您的时区。在/opt/web-app/index.php第2行和第34行;从上游读取响应头时,客户端:172.18.0.1,server :, request:" GET /favicon.ico HTTP / 1.1",上游:" fastcgi://172.18.0.2:9000& #34;,主持人:" localhost:8080",推荐人:" http://localhost:8080/index.php"

我可以对NginxPHP-FPM的非常简单的配置文件进行任何更改吗?

2 个答案:

答案 0 :(得分:0)

catch_workers_output更改为no应该可以解决问题:

catch_workers_output = no

这将使PHP日志消息按配置,但阻止这些消息通过fastcgi连接传递给nginx。

答案 1 :(得分:0)

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

php_admin_flag[fastcgi.logging] = off

相关文档在这里:https://www.php.net/manual/en/ini.core.php#ini.fastcgi.logging