在 Centos7 上,将 PHP 7 配置为将错误发送到 syslog,解析错误会广播到墙上,例如,登录的用户会看到如下消息:
Broadcast message from systemd-journald@xxxxxxxxxx (Fri 2017-03-03 22:29:05 UTC):
httpd[3465]: PHP Parse error: Invalid numeric literal in /web/test.php on line 20
我想捕获这些消息并防止它们进入墙内。我尝试过这个 Rsyslog 配置:
user.* /var/log/php.log
& stop
但是它并没有阻止广播消息。编辑/etc/systemd/journald.conf
以包含ForwardToWall=no
阻止广播消息...问题是它阻止全部显示的紧急消息是不可取的。
如何才能防止 PHP 解析错误被广播,但允许其他关键系统消息被记录到控制台?
答案1
事实证明,将ForwardToWall=no
&ForwardToSyslog=yes
放入/etc/systemd/journald.conf
可以解决问题。
来自 PHP 的 Emerg 消息被这个自定义的 Rsyslog 配置捕获:
user.* /var/log/php.log
& stop
其他紧急消息稍后会被捕获:
*.emerg :omusrmsg:*
它已将消息发送给所有登录用户。