今天我想用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,所以它无法写入慢日志。
我不知道到底发生了什么事,有人能帮我吗?谢谢。
2条答案
按热度按时间agyaoht71#
你可以使用这个命令(chmod 777 my_slow_log),我认为Log目录权限并不重要。
5lhxktic2#
我发现php-fpm不会向慢速日志写入任何内容,除非在
/etc/php-fpm.conf
中将log_level设置为notice
;日志级别;可能值:alert、error、warning、notice、debug ;默认值:通知日志级别=通知
虽然
notice
是默认的log_level,但几年前我已经将其更改为warning
。我搜索了为什么没有写慢日志,但我没有看到这个答案。所以希望它能对某些人有所帮助。