PHP-FPM可以创建slow.log,但不能将内容写入slow.log

时间:2019-05-16 12:00:08

标签: php nginx

今天,我想使用 PHP-FPM 启用慢速日志,然后在php-fpm.conf中配置了一些参数。 最后,我有一个问题,它可以创建慢速日志,但是不能将任何内容写入慢速日志。 有人可以帮我吗,非常感谢?

我的网站正在Docker中运行,我的 Nginx 使用 Unix套接字 PHP-FPM Nginx < / strong>以 Root

身份运行
location ~ \.php$ {
   try_files $uri =404;
   fastcgi_pass unix:/var/run/php-fpm7.sock;
}

我的php-fpm.conf

[www123]
user = app
group = app
listen = /var/run/php-fpm7.sock
listen.owner = app
listen.group = app
listen.mode = 0666

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

slowlog = /app/logs/my_slow_log/$pool.log.slow
request_slowlog_timeout = 1s

下一步,我创建了目录app/logs/my_slow_log,然后重新启动PHP-FPM。它在目录www123.log.slow中创建了文件app/logs/my_slow_log,但是文件权限/用户/组错误。是600 / root / root

/app/logs/my_slow_log # ls -al
total 4
drwxr-xr-x    2 app      app             28 May 16 19:32 .
drwxrwxrwx    3 app      app           4096 May 16 19:00 ..
-rw-------    1 root     root             0 May 16 19:32 www123.log.slow

有一些正在运行的进程

app/logs/my_slow_log # ps -ef
PID   USER     TIME   COMMAND
    1 root       0:00 runsvdir /etc/service
    7 root       0:00 runsv nginx
    8 root       0:00 runsv javabridge
    9 root       0:00 runsv php7
   10 root       0:00 java -jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/ext/JavaBridge.jar SERVLET_LOCAL:8080
   11 root       0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf -g daemon off;
   12 root       0:00 {php-fpm7} php-fpm: master process (/etc/php7/php-fpm.conf)
   13 root       0:00 nginx: worker process
   14 root       0:00 nginx: worker process
   15 root       0:00 nginx: worker process
   16 root       0:00 nginx: worker process
   22 app        0:00 {php-fpm7} php-fpm: pool www123
   23 app        0:00 {php-fpm7} php-fpm: pool www123

我发现主php-fpm进程以 Root 运行,但是子进程以 app 运行,因此我修改了php-fpm.conf更改< / p>

user = root
group = root
listen.owner = root
listen.group = root

然后重新启动PHP-FPM,我得到一些错误消息

ERROR: [pool www123] please specify user and group other than root
ERROR: FPM initialization failed

它不能用作 Root 。 我认为问题是/app/logs/my_slow_log/www123.log.slow由PHP-FPM主进程使用 root 创建的,而我的子进程是用户 app ,因此它无法向其中写入任何内容慢日志。

我不知道真正发生了什么,有人可以帮助我吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用此命令(chmod 777 my_slow_log),我认为Log目录权限并不重要。