Logging

使 php-fpm 以 root:adm 身份登錄

  • May 21, 2018

我想確保adm組的成員可以讀取所有日誌,並且 php-fpm 程序在php5-fpm.log登錄root:rootu=r+w

我找不到實現這一目標的方法。我考慮過使用syslog.facility指令,但我寧願保留一個專用的日誌文件。

您應該更仔細地閱讀有關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
}

系統日誌和專用設施

使用Syslogd可以在同一syslog.conf. 仍然可以通過專用工具將 syslogd 配置為使用 PHP FPM 的單獨日誌文件,例如local4

# /etc/syslog.conf

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

Rsyslog 過濾器

如果你使用rsyslogd,你可以過濾PHP-FPM 的syslog.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

引用自:https://serverfault.com/questions/848400