最近遇到一个奇怪的问题,在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 #...
参考资料: