php-fpm启动失败 Address already in use
【摘要】 [root@centos7 ~]# /usr/local/php8/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php8/etc/php-fpm.conf[12-Sep-2025 13:16:58] ERROR: unable to bind listening socket for address '127.0.0.1:9000':...
[root@centos7 ~]# /usr/local/php8/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php8/etc/php-fpm.conf
[12-Sep-2025 13:16:58] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[12-Sep-2025 13:16:58] ERROR: FPM initialization failed
问题定位
从手动启动 PHP-FPM 的错误日志来看,关键错误是:
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
这表明 127.0.0.1:9000
端口已被其他进程占用,导致 PHP-FPM 无法绑定到该端口,从而启动失败。
解决方案
1. 确认占用端口的进程
运行以下命令查看哪个进程占用了 9000
端口:
netstat -tulnp | grep 9000
# 或
ss -tulnp | grep 9000
可能的结果:
- 另一个 PHP-FPM 实例(如旧版本或未停止的服务)。
- 其他服务(如 Nginx、Apache 或某些应用)。
2. 终止占用端口的进程
如果确认是无关进程占用端口,可以终止它:
kill -9 <PID> # 替换 <PID> 为实际进程 ID
示例:
kill -9 12345 # 假设 12345 是占用 9000 端口的进程
3. 修改 PHP-FPM 监听端口
如果无法终止占用进程(如另一个关键服务正在使用 9000
端口),可以修改 PHP-FPM 的监听端口:
- 编辑 PHP-FPM 配置文件:
vim /usr/local/php8/etc/php-fpm.conf
- 找到
listen
参数,修改为其他端口(如9001
):listen = 127.0.0.1:9001
- 保存文件并重启 PHP-FPM:
systemctl restart php-fpm
4. 检查 PHP-FPM 配置重复
如果系统中有多个 PHP-FPM 实例(如 PHP 7.x 和 PHP 8.x),确保它们的 listen
端口不冲突。例如:
- PHP 7.x 监听
127.0.0.1:9000
- PHP 8.x 监听
127.0.0.1:9001
5. 验证修改
再次检查端口占用情况:
netstat -tulnp | grep 9000 # 确认原端口已释放
netstat -tulnp | grep 9001 # 确认新端口已监听
附加建议
-
检查 systemd 服务文件
确保/usr/lib/systemd/system/php-fpm.service
中的ExecStart
路径与实际 PHP-FPM 路径一致:grep ExecStart /usr/lib/systemd/system/php-fpm.service
如果路径错误,修正后运行:
systemctl daemon-reload
-
查看 PHP-FPM 错误日志
如果问题仍然存在,检查日志获取更多信息:tail -n 50 /var/log/php-fpm/error.log
-
防火墙/SELinux 检查
如果修改端口后仍无法访问,确保防火墙或 SELinux 未阻止新端口:firewall-cmd --list-ports # 查看防火墙开放端口 firewall-cmd --add-port=9001/tcp # 开放端口(示例) setenforce 0 # 临时关闭 SELinux(测试用)
总结
- 根本原因:
127.0.0.1:9000
端口被占用,导致 PHP-FPM 启动失败。 - 解决步骤:
- 确认占用端口的进程(
netstat
/ss
)。 - 终止无关进程或修改 PHP-FPM 的监听端口。
- 重启 PHP-FPM 并验证。
- 确认占用端口的进程(
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)