php slowlog在docker容器中导致ptrace错误

前端之家收集整理的这篇文章主要介绍了php slowlog在docker容器中导致ptrace错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一台AWS Linux主机运行一个带有5.5.25和PHP-fpm的centos 7 docker容器. PHP通过端口9000暴露在docker容器之外,并且正在向Nginx服务器提供请求.这个设置一直很好,但是当我最近打开PHP-fpm slowlog尝试调试一些慢速代码时,我无法让PHP记录慢速脚本.我在/etc/PHP-fpm.d/www.conf中设置了以下内容
request_slowlog_timeout = 5s
slowlog = /var/www/log/PHP-fpm-slow.log

/var/www/log/PHP-fpm-slow.log由拥有777权限的www用户拥有.每次慢速脚本运行时,以下内容都会记录到PHP错误日志中.

[07-Jul-2015 07:33:34] ERROR: Failed to ptrace(ATTACH) child 18: Operation not permitted (1)
[07-Jul-2015 07:33:34] WARNING: [pool www] child 18,script '/var/www/src/index.PHP' (request: "GET /index.PHP") executing too slow (5.700050 sec),logging

我从中得知5s的request_slowlog_timeout实际上是被触发但由于某种原因无法生成日志.

我见过类似但不完全相同的问题,建议修改/etc/sysctl.d/10-ptrace.conf或/ proc / sys / kernel / yama / ptrace_scope.遗憾的是,我的主机AWS Linux或容器Centos 7操作系统中都没有这些文件.

有没有人对可能导致此问题的原因有什么想法,或者我可以采取哪些步骤进一步调试?

我终于想通了.您需要为docker容器提供使用ptrace的功能.只需将–cap-add SYS_PTRACE添加到docker run命令就可以解决这个问题.

猜你在找的PHP相关文章