私は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)
しかし、そうではありません。
私は以下でこの問題を解決することができました:
DefaultLimitCORE=infinity
sysctl kernel.core_pattern='| /usr/lib/systemd/systemd-coredump %p %u %g %s %t %c %e'
systemctl daemon-reload
Php-fpmの追加手順として、監視する個々のphp-fpmプールファイルに次のディレクティブを設定する必要があります。
rlimit_core =無制限
Systemd-coredumpプログラムのデフォルトディレクトリは/var/lib/systemd/coredump
したがって、ここで生成されたダンプファイルが表示されます。
私もこれに問題がありました。 CentOSでは、マスターphp-fpm
プロセスがroot権限で起動され、その後、権限が制限された個々のプールが起動されるようです(デフォルトでは、centosのユーザーphp-fpm
)。
私にとってのつまずきは、プロセスが自身の実行権限を変更した場合、/proc/sys/fs/suid_dumpable
がこれを許可するように設定されていない限り、コアダンプファイルを生成することは許可されないということです。このカーネルレベルの制御に関する情報を参照してください ここ 。