让 php-fpm 以 root 身份登录:adm

coo*_*dje 2 logging php-fpm

我想确保组的成员可以读取所有日志,并且 php-fpm 进程在记录下时adm会出现异常php5-fpm.logroot:rootu=r+w

我找不到实现此目标的方法。我考虑过使用syslog.facility指令,但我宁愿保留一个专用的日志文件。

Esa*_*nen 5

您应该更仔细地阅读有关PHP FPM 配置 指令的手册php-fpm.conf

  • syslog.facility指令仅控制设施类型,默认设置为daemon。这并不影响位置。非规范系统日志工具在RFC 5424, 6.2.1中定义。如您所见,设施 16-23 供本地使用,您可以将其中一个专门用于 PHP FPM。
  • 将日志发送到 syslogd 而不是本地文件的正确指令是error_log syslog,而默认值是#INSTALL_PREFIX#/log/php-fpm.log
  • 这里另一个重要的指令是syslog.ident php-fpm(即默认值)。

在配置级别上没有关于文件权限的内容。您必须进入源代码级别才能弄清楚它实际上是如何完成的。一些建议更改初始化脚本上的日志文件权限。

一个 Logrotate 即可统治一切

文件权限可以在logrotate配置中控制,该配置也有create指令。

/var/log/php-fpm.log {
    create 0640 root adm
}
Run Code Online (Sandbox Code Playgroud)

Syslogd 和专用设施

使用Syslogd可以在同一syslog.conf. 仍然可以通过专用工具将 syslogd 配置为对 PHP FPM 使用单独的日志文件,例如local4

# /etc/syslog.conf

local4.*    /var/log/php-fpm.log
Run Code Online (Sandbox Code Playgroud)

Rsyslog 过滤器

如果您使用rsyslogd,您可以过滤每条消息syslog.ident 前面的PHP-FPM :

# /etc/rsyslog.conf

:syslogtag, isequal, "php-fpm"    /var/log/php-fpm.log
:syslogtag, isequal, "php-fpm"    ~
Run Code Online (Sandbox Code Playgroud)

使用 rsyslogd,文件权限也在以下位置设置rsyslog.conf

# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
Run Code Online (Sandbox Code Playgroud)