未生成PHP-FPM核心转储

问题描述 投票:0回答:1

当PHP出现故障时,我正试图生成核心转储。WARNING: [pool www] child 2756 exited on signal 11 (SIGSEGV) after 153.518521 seconds from start.我正在使用一个基于Alpine的自定义Docker容器,托管在ECS上。

我遵循了多个指南,但PHP-FPM不能生成核心转储(我可以用php cli或用 kill -s SIGSEGV $$). 我遵循的指南: - https:/ma.tias.begenerate-php-core-dumps-segfaults-php-fpm。 https:/www.bggofurther.com201504generating-core-dumps-for-php-fpm- 未生成核心转储文件

我的配置如下。

/ # ulimit -c
unlimited

/ # cat /proc/sys/kernel/core_pattern
/tmp/core-dumps/core-%t-%p

/ # cat /proc/sys/kernel/core_uses_pid
0

/ # php-fpm -tt
[global]
 pid = undefined
 error_log = /proc/self/fd/2
 syslog.ident = php-fpm
 syslog.facility = 24
 log_buffering = yes
 log_level = unknown value
 log_limit = 8192
 emergency_restart_interval = 0s
 emergency_restart_threshold = 0
 process_control_timeout = 0s
 process.max = 0
 process.priority = undefined
 daemonize = no
 rlimit_files = 0
 rlimit_core = 0
 events.mechanism = epoll

[www]
 prefix = undefined
 user = www-data
 group = www-data
 listen = 9000
 listen.backlog = 511
 listen.owner = undefined
 listen.group = undefined
 listen.mode = undefined
 listen.allowed_clients = undefined
 process.priority = undefined
 process.dumpable = no
 pm = dynamic
 pm.max_children = 35
 pm.start_servers = 6
 pm.min_spare_servers = 4
 pm.max_spare_servers = 8
 pm.process_idle_timeout = 10
 pm.max_requests = 500
 pm.status_path = /_/php-fpm/status
 ping.path = undefined
 ping.response = undefined
 access.log = /proc/self/fd/2
 access.format = [%{%Y-%m-%dT%H:%M:%S%z}t] %R "%m %{REQUEST_SCHEME}e://%{HTTP_HOST}e%{REQUEST_URI}e" %s %f %{mili}d %{kilo}M %C%%
 slowlog = undefined
 request_slowlog_timeout = 0s
 request_slowlog_trace_depth = 20
 request_terminate_timeout = 0s
 request_terminate_timeout_track_finished = no
 rlimit_files = 0
 rlimit_core = unlimited
 chroot = undefined
 chdir = undefined
 catch_workers_output = yes
 decorate_workers_output = no
 clear_env = no
 security.limit_extensions = .php .phar

configuration file /usr/local/etc/php-fpm.conf test is successful

我试着用 /proc/sys/kernel/core_uses_pid1 并与 process.dumpable = yes 我想是PHP-FPM配置的问题,因为当我在cli中执行一个脚本时(我指的是像这样的 php generate_sigsegv.php)核心转储生成良好。然而,我不知道为什么事情会出错。

对于CLI,我使用了这个脚本。

<?php

  function segfault ($i = 1) {
    echo "$i\n";
    segfault($i + 1);
  }

  segfault();

?>

对于 PHP-FPM,我正在调查我的应用程序中的一个错误,所以我有一个 API 来调用生成 SIGSEGV。

php linux segmentation-fault
1个回答
0
投票

问题是生成核心转储的文件夹的权限。确保PHP-FPM使用的用户有权利在文件夹上写东西.因为CLI中的PHP是与你的容器中的用户(主要是root)一起执行的,你可能有权利,但不是PHP-FPM。

© www.soinside.com 2019 - 2024. All rights reserved.