首页 > 解决方案 > PHP FPM + nginx 日志记录

问题描述

根据我在手册中阅读的内容,带有display_errors = off和的 PHP 和没有error_log = /var/log/php.log的工人应该将错误发送到该 php.log 文件。我也明白 nginx fastcgi 应该将 STDERR 转储到 /dev/null。 catch_workers_output = yes

但是我发现我的网站的错误确实会反馈给 nginx 并登录到它的日志文件中,我想知道为什么。

我在 Debian 10 上使用 PHP7.3 nginx 1.14。nginx 和 php 的配置很复杂,但我可以从中提供关键信息。

我发现的作品

在我的 FPM 池配置中,我可以添加

[poolname]
user = pooluser
php_admin_value[error_log] = /var/log/fpm-php-$pool.log 

这有效,如果 /var/log/fpm-php-poolname.log存在并且rw适用于pooluser.

但是如果这些权限不正确,我会期望任何地方都没有错误,或者更高级别的一些错误(例如控制工人的 php 进程)。但相反,它似乎退回到将错误发送回 nginx - 我在任何地方都找不到该行为记录?

(有了这个经验的理解,我现在明白了,因为pooluser无法写入全局配置error_log的文件,所以它正在回退,错误正在登陆 nginx 的错误日志。)

所以我不明白的两件事是:

  1. php 回退到发送错误是否正确 - 什么?通过标准错误?- 到nginx?
  2. nginx 然后为自己的日志文件“捕获工作人员输出”是否正确,即使未设置该选项?

标签: phpnginxlogging

解决方案


推荐阅读