Docker中PHP-FPM容器无法记录日志

最近遇到一个奇怪的问题,在docker的php容器中配置了启用慢日志:

catch_workers_output = yes
slowlog = /var/log/dnmp/php.slow.log
request_slowlog_timeout = 1s

但是日志文件总是没记录,一直是空的。

最后在serverfault.com上找到答案:

在Linux系统中,PHP-FPM使用SYS_PTRACE跟踪worker进程

但是docker容器默认又不启用这个功能,所以就导致了这个问题。

知道了问题所在,解决起来就快了。

如果用命令行,在命令上加上:

--cap-add=SYS_PTRACE

如果用docker-compose.yml文件,在服务中加上:

php:
  #...
  cap_add:
    - SYS_PTRACE
  #...

 

参考资料:

  1. PHP slowlog empty even though PHP-FPM says it's logging

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *