以 root:adm 身份使 php-fpm 日志记录

以 root:adm 身份使 php-fpm 日志记录

我想确保组成员adm能够读取所有日志,而 php-fpm 进程在php5-fpm.log以下情况下会进行例外记录root:rootu=r+w

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

答案1

你应该仔细阅读手册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(即默认价值)。

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

一个 Logrotate 来统治一切

文件权限可以控制在日志旋转配置,其中也有create指令。

/var/log/php-fpm.log {
    create 0640 root adm
}

Syslogd 和专用设施

使用系统日志允许在同一台计算机上配置所有文件位置syslog.conf. 仍然可以配置 syslogd 以通过专用工具为 PHP FPM 使用单独的日志文件,例如local4

# /etc/syslog.conf

local4.*    /var/log/php-fpm.log

Rsyslog 过滤器

如果你使用rsyslogd, 你可以筛选PHP-FPMsyslog.ident 前置每封邮件:

# /etc/rsyslog.conf

:syslogtag, isequal, "php-fpm"    /var/log/php-fpm.log
:syslogtag, isequal, "php-fpm"    ~

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

# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

相关内容