我想确保组成员adm
能够读取所有日志,而 php-fpm 进程在php5-fpm.log
以下情况下会进行例外记录root:root
:u=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