今天,我想使用 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 ,因此它无法向其中写入任何内容慢日志。
我不知道真正发生了什么,有人可以帮助我吗? 谢谢。
答案 0 :(得分:0)
您可以使用此命令(chmod 777 my_slow_log),我认为Log目录权限并不重要。