在 php-fpm 中向 syslog 发送错误

Posted

技术标签:

【中文标题】在 php-fpm 中向 syslog 发送错误【英文标题】:Sending errors to syslog in php-fpm 【发布时间】:2014-03-22 08:14:05 【问题描述】:

我正在尝试设置一个 php-fpm 守护程序以将 error_log 发送到 syslog。

我的配置 php-fpm.conf 看起来是这样的。

error_log = syslog
syslog.facility = local4
syslog.ident = php-fpm

重启 php-fpm 守护进程我可以在远程 syslog 服务器中看到。

Mar 22 00:32:08 192.168.33.14 php-fpm[20919]: [NOTICE] configuration file /etc/php5/fpm/php-fpm.conf test is successful

很好!

但是当我用一个有错误的真实 php 脚本测试这个时,消息变为..

Mar 22 00:05:59 192.168.33.14 ool www[20889]: PHP Parse error:  syntax error, unexpected ''api'' (T_CONSTANT_ENCAPSED_STRING) in /var/api/public/index.php on line 2

ool www 是池 + 默认池名称 (www)。所以两个问题:

为什么我看到的是 ool www 而不是 php-fpm(syslog.ident 值)?李> 为什么池标题被截断?

【问题讨论】:

虽然我自己的技巧 (***.com/questions/22569001/…) 解决了问题,但没有解决问题。 你能解决这个问题吗? 【参考方案1】:

我认为这是一个 PHP 错误 :( 请看

https://bugs.php.net/bug.php?id=67764

【讨论】:

【参考方案2】:

随着我们开始将旧系统升级到 php 5.5+,此问题将变得更加普遍,因此发布以供将来参考。

这是我们使用的修复程序,将其置于尽可能低的级别,以便您的所有脚本都能受益:

// This was needed for upgrade to php5.5+ with php-fpm
//  Source: https://gist.github.com/gjuric/e0c9e45efb3d15e3b949
//  Bug History: http://***.com/questions/22575152/sending-errors-to-syslog-in-php-fpm
openlog('php', LOG_ODELAY, LOG_USER);

【讨论】:

以上是关于在 php-fpm 中向 syslog 发送错误的主要内容,如果未能解决你的问题,请参考以下文章

nginx php-fpm记录php错误日志怎么配置

Golang:无法在恢复()中向通道发送错误

在 Python 中向 sftp 子进程发送密码

在 Rails API 中向第三方发送错误数据的最佳位置在哪里?

尝试使用 python shell 在 python3 中向客户端发送消息但仍然出现错误

如何在 Python 中向 Sentry 发送日志记录附件?