在 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 发送错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails API 中向第三方发送错误数据的最佳位置在哪里?