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

oipij1gg  于 2023-03-28  发布在  PHP
关注(0)|答案(2)|浏览(118)

今天我想用PHP-FPM打开慢日志,然后在php-fpm.conf里面配置了一些参数,结果遇到了一个问题,可以创建慢日志,但是不能写入任何内容,谁能帮帮我,谢谢!
我的网站在Docker中运行,我的Nginx使用Unix套接字PHP-FPM通信,Nginx身份运行

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,在app/logs/my_slow_log目录下创建了www123.log.slow文件,但是文件权限/user/group不对,是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更改

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身份工作,我认为问题是PHP-FPM主进程创建的/app/logs/my_slow_log/www123.log.slow,其根为root,而我的子进程是用户app,所以它无法写入慢日志。
我不知道到底发生了什么事,有人能帮我吗?谢谢。

agyaoht7

agyaoht71#

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

5lhxktic

5lhxktic2#

我发现php-fpm不会向慢速日志写入任何内容,除非在/etc/php-fpm.conf中将log_level设置为notice
;日志级别;可能值:alert、error、warning、notice、debug ;默认值:通知日志级别=通知
虽然notice是默认的log_level,但几年前我已经将其更改为warning。我搜索了为什么没有写慢日志,但我没有看到这个答案。所以希望它能对某些人有所帮助。

相关问题