从我在手册中读到的内容来看,带有 display_errors = off
和 error_log = /var/log/php.log
的 PHP 以及一个 没有 catch_workers_output = yes
应该发送该 php.log 文件的错误。我也明白 nginx fastcgi 应该将 STDERR 转储到 /dev/null。
但是我发现我网站的错误确实会反馈给 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
这有效,if /var/log/fpm-php-poolname.log
存在并且 rw
为 pooluser
。
但是如果这些权限不正确,我会期望在任何地方都没有错误,或者在更高级别上出现一些错误(例如控制工人的 php 进程)。但相反,它似乎退回到将错误发送回 nginx - 我找不到任何地方记录的行为?
(有了这个经验性的理解,我现在明白了,因为 pooluser
无法写入全局配置的 error_log
文件,它正在回退并且错误登陆 nginx 的错误日志。)
所以我不明白的两件事是: