Skip to content

php82监听127.0.0.1导致nginx容器没法连接到php-fpm #627

@Nisekoi5

Description

@Nisekoi5

php82www.conf (项目中的php-fpm.conf) 设置 listen = 127.0.0.1:9000 覆盖了镜像中 docker.conf 的设定。
似乎使得nginxfastcgi_pass php82:9000; 无法连接到PHP容器。

2026/05/11 01:17:22 [error] 21#21: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 1.1.1.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://172.18.0.2:9000", host: "x.x.x.x"

root@d9e42323d3e9:/usr/local/etc/php-fpm.d# grep -R listen\ =
www.conf.default:listen = 127.0.0.1:9000
www.conf.default:;pm.status_listen = 127.0.0.1:9001
docker.conf:; listen = 9000
www.conf:listen = 127.0.0.1:9000

其他版本的PHP可以连接上似乎是因为PHP镜像内包含了一个zz-docker.conf
其中指定了 listen = 9000覆盖了www.conf (项目中的php-fpm.conf)设定的isten = 127.0.0.1:9000

/usr/local/etc/php-fpm.d # cat zz-docker.conf 
[global]
daemonize = no

[www]
listen = 9000

而在PHP82版本的镜像中,zz-docker.conf似乎不含此参数,于是遵循www.conf 的配置监听了127.0.0.1,从而导致nginx无法连接

/usr/local/etc/php-fpm.d# cat zz-docker.conf 
[global]
daemonize = no

; the [www] ini section below is for backwards compatibility and will be removed in 8.6+
[www]

我的临时解决方案是在DockerFile加了一行,使其监听0.0.0.0,后重新build了镜像后恢复正常
RUN echo 'listen = 9000' >> /usr/local/etc/php-fpm.d/zz-docker.conf

是否应该把项目中的php-fpm.conf统一修改为监听0.0.0.0?

listen = 127.0.0.1:9000

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions