web-dev-qa-db-ja.com

php-fpmは、次のように構成されているにもかかわらず、コアダンプファイルを生成しません

私はphp-fpm5.4でCentos7を実行しています。 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)しかし、そうではありません。

2
WackGet

私は以下でこの問題を解決することができました:

  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したがって、ここで生成されたダンプファイルが表示されます。

0
WackGet

私もこれに問題がありました。 CentOSでは、マスターphp-fpmプロセスがroot権限で起動され、その後、権限が制限された個々のプールが起動されるようです(デフォルトでは、centosのユーザーphp-fpm)。

私にとってのつまずきは、プロセスが自身の実行権限を変更した場合、/proc/sys/fs/suid_dumpableがこれを許可するように設定されていない限り、コアダンプファイルを生成することは許可されないということです。このカーネルレベルの制御に関する情報を参照してください ここ

1
Benjamin