Php

儘管配置為 php-fpm 不生成核心轉儲文件

  • May 28, 2020

我正在使用 php-fpm 5.4 執行 Centos 7。我在我的 php-fpm 錯誤日誌中遇到(信號 11)SIGSEGV 錯誤並想對其進行調試。

我遵循了php5 fpm 的建議:你如何從 segfault 生成核心轉儲?但 php-fpm 甚至還沒有嘗試生成核心轉儲。從 php-fpm 錯誤日誌:

WARNING: [pool website.com] child 26953 exited on signal 11 (SIGSEGV) after 0.931337 seconds from start

如果生成了核心轉儲,它會讀取(SEGSEGV - core dumped)但不會。

我能夠通過以下方式解決此問題:

  1. 添加到 /etc/systemd/system.conf 文件:

DefaultLimitCORE=infinity

  1. 更改了 kernel.core_pattern:

sysctl kernel.core_pattern='| /usr/lib/systemd/systemd-coredump %p %u %g %s %t %c %e'

  1. 重新載入 systemd 配置:

systemctl daemon-reload

作為 php-fpm 的額外步驟,需要在您要監控的各個 php-fpm 池文件中設置以下指令:

rlimit_core = 無限制

systemd-coredump 程序的預設目錄是,/var/lib/systemd/coredump因此您應該會看到此處生成的轉儲文件。

我也遇到了麻煩。似乎在 centos 上,主php-fpm程序以 root 權限啟動,然後以降低的權限啟動各個池(php-fpm預設情況下為 centos 上的使用者)。

對我來說,我也懷疑你的絆腳石是,如果一個程序改變了它自己的執行權限,除非/proc/sys/fs/suid_dumpable設置為允許,否則不允許生成核心轉儲文件。在此處查看有關此核心級控制的資訊。

引用自:https://serverfault.com/questions/927592