docker下 PHP 慢日誌無法記錄 [轉] | failed to open /proc/13/mem: Permission denied (13)

大佬地址:Docker中PHP-FPM容器無法記錄日誌

背景

訪問地址總是提示504超時,就尋思看看PHP慢查詢日誌

vi /usr/local/php/etc/php-fpm.conf
--------------已配置如下----------------------
[global]
error_log = /tmp/php-fpm.log
[www]
request_slowlog_timeout = 5
slowlog = /tmp/www.log.slow

可是呢,www.log.slow下一直爲空
查看php-fpm錯誤日誌/tmp/php-fpm.log,顯示如下
在這裏插入圖片描述
看到error報錯了,就一直搜這個failed to open /proc/13/mem: Permission denied (13),然而並沒什麼卵用,一直找啊找,找了一下午,後又猜測各種可能找到了大神的筆記,才知道問題再trace上不是在權限上

最後在docker-compose.yml文件裏配置了

此項目模塊:
  cap_add:
    - SYS_PTRACE

重啓,成功!!

大神筆記

最近遇到一個奇怪的問題,在docker的php容器中配置了啓用慢日誌:
slowlog = /tmp/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

總結

先入爲主的想法很危險,鑽死衚衕容易鬱悶,經驗果然很重要!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章