在php-fpm中向syslog发送错误

时间:2014-03-22 08:14:06

标签: php syslog

我正在尝试设置一个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值)?
  • 为什么池标题会被截断?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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