首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP-FPM不写入错误日志

PHP-FPM不写入错误日志
EN

Stack Overflow用户
提问于 2011-12-30 16:14:39
回答 9查看 330.9K关注 0票数 169

我刚刚安装了一个nginx+php-fpm服务器。一切似乎都很好,除了PHP-FPM从不在日志中写入错误。

fpm.conf

代码语言:javascript
复制
[default]
listen = /var/run/php-fpm/default.sock
listen.allowed_clients = 127.0.0.1
listen.owner = webusr
listen.group = webusr
listen.mode = 0666
user = webusr
group = webusr
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.status_path = /php/fpm/status
ping.path = /php/fpm/ping
request_terminate_timeout = 30s
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/default/slow.log
chroot = /var/www/sites/webusr
catch_workers_output = yes
env[HOSTNAME] = mapsvr.mapking.com
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/default/error.log
php_admin_flag[log_errors] = on

nginx.conf

代码语言:javascript
复制
server
{
  listen        80 default_server;
  server_name   _;

  charset       utf-8;
  access_log    /var/log/nginx/access.log rest;

  include       conf.d/drops.conf.inc;

  location      /
  {
    root        /var/www/sites/webusr/htdocs;
    index       index.html index.htm index.php;
  }

  # pass the PHP scripts to FastCGI server listening on socket
  #
  location      ~ \.php$
  {
    root           /var/www/sites/webusr/htdocs;
    include        /etc/nginx/fastcgi_params;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME /htdocs/$fastcgi_script_name;
    if (-f $request_filename)
    {
      fastcgi_pass   unix:/var/run/php-fpm/default.sock;
    }
  }

  location      = /php/fpm/status
  {
    include        /etc/nginx/fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass   unix:/var/run/php-fpm/default.sock;
  }

  location      = /php/fpm/ping
  {
    include        /etc/nginx/fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass   unix:/var/run/php-fpm/default.sock;
  }

  # redirect server error pages to the static page /50x.html
  #
  error_page    500 502 503 504  /50x.html;
  location      = /50x.html
  {
    root        /usr/share/nginx/html;
  }
}

我创建了一个错误的php脚本并运行,然后在web浏览器上看到错误输出。同样,nginx错误日志使用相同的消息说明从fpm输出的stderr。我已经检查了用户是否对指定的日志文件夹具有写权限(我甚至尝试了777)。甚至指定的error.log文件也已经被php-fpm成功创建。然而,日志文件总是空的,不管php脚本出了什么可怕的错误。

到底怎么回事?

过了好一阵子才找到原因

这是许可。将所有者更改为网站的用户,解决了问题。

EN

回答 9

Stack Overflow用户

发布于 2012-05-11 13:57:03

这对我很有效:

代码语言:javascript
复制
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Default Value: no
catch_workers_output = yes

编辑:

要编辑的文件是配置所需池的文件。缺省情况下为: /etc/php-fpm.d/www.conf

票数 205
EN

Stack Overflow用户

发布于 2015-01-23 01:31:52

在发现我的php-fpm日志被写到/var/log/upstart/php5-fpm.log之前,我为此挣扎了很长一段时间。这似乎是upstart和php-fpm交互方式之间的一个bug。点击此处查看更多信息:https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1319595

票数 80
EN

Stack Overflow用户

发布于 2014-04-22 23:18:03

我遇到了类似的问题,必须对pool.d/www.conf文件执行以下操作

代码语言:javascript
复制
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on

它仍然没有写入日志文件,所以我实际上必须通过touch /var/log/fpm-php.www.log创建它,然后设置正确的所有者sudo chown www-data:www-data /var/log/fpm-php.www.log

一旦完成此操作,并重新启动php5-fpm,日志记录就会恢复。

票数 59
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8677493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档