php - 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 的错误日志。)
所以我不明白的两件事是:
- php 回退到发送错误是否正确 - 什么?通过标准错误?- 到nginx?
- nginx 然后为自己的日志文件“捕获工作人员输出”是否正确,即使未设置该选项?
解决方案
推荐阅读
- python - CSV 中的 URL 比较不适用于 Python Pandas
- python - 无限滚动不滚动
- openlayers - 如何从众所周知的文本中获取坐标到 OpenLayers 中的坐标?
- c++ - 如何在 CMake 中下载、编译和链接库作为外部项目?
- node.js - 我正在尝试安装 Angular 8,但它给了我错误我尝试了很多但它不起作用?
- php - Yii2 用户身份在登录后为空
- c# - 打包android资产文件夹的问题
- python - 如何在 Python 中添加循环分组?
- java - 这个 UI 代码的辅助方法会是什么样子?
- reactjs - 当涉及到平板电脑尺寸时,我想更改视频播放器的宽度