PHP-FPM 是否运行需依次检查进程、端口、服务状态和配置文件;停止并禁用服务后再卸载,注意清理残留 socket 和 Web 服务器引用。

怎么确认 PHP-FPM 正在运行
别急着卸载,先看它是不是真在跑。很多人以为自己装了 PHP-FPM,其实只是编译过、没启用,或者用的是 Apache 的 mod_php 而非 FPM 模式。
- 查进程:
ps aux | grep php-fpm—— 注意看有没有 master 进程和 worker 子进程 - 查监听端口:
ss -tlnp | grep :9000(默认端口)或ss -tlnp | grep php - 查服务状态(systemd 系统):
systemctl status php-fpm或systemctl status php*-fpm(版本不同名可能带版本号,如php7.4-fpm) - 查配置文件是否存在:
/etc/php/*/fpm/php-fpm.conf或/usr/etc/php-fpm.conf,存在不等于启用,但能帮你定位安装路径
停止并禁用 PHP-FPM 服务(systemd 环境)
停服务 ≠ 卸载,但这是安全卸载的前提。直接删包可能导致残留进程或下次启动失败。
- 停止当前运行:
sudo systemctl stop php-fpm(或php8.1-fpm等具体名) - 禁止开机自启:
sudo systemctl disable php-fpm - 验证是否已停:
systemctl is-active php-fpm应返回inactive;systemctl is-enabled php-fpm应返回disabled - 注意:某些发行版(如 CentOS Stream 9)默认用
php-fpm,而 Ubuntu/Debian 常用php*-fpm,名字错一个就操作失败
彻底卸载 PHP-FPM 及关联 PHP 包
只删 php-fpm 包,往往留一堆 PHP 核心模块(如 php-cli、php-common),后续装其他 PHP 版本时容易冲突。
- Ubuntu/Debian:
sudo apt purge php*-fpm php-common(*通配当前所有版本的 fpm 包);再执行sudo apt autoremove - CentOS/RHEL 8+:
sudo dnf remove php-fpm php-common;若用 Remi 源,得加--enablerepo=remi或先查清来源:dnf list installed | grep php - macOS(Homebrew):
brew services stop php+brew uninstall php(新版 Homebrew 的php包默认含 fpm) - ⚠️ 别单独删
/etc/php/*/fpm/目录 —— 如果包管理器没清理干净,手动删可能漏掉php.ini或 socket 文件,导致下次重装报错
检查残留项和常见踩坑点
卸载后最常出问题的地方不是命令没敲对,而是环境里还埋着“幽灵”配置或旧 socket。
立即学习“PHP免费学习笔记(深入)”;
- 残留 socket 文件:
/run/php/php*-fpm.sock或/var/run/php/php*-fpm.sock—— 这些不会被包管理器自动删,Nginx 配置若还指向它,会报connect() to unix:/run/php/php8.1-fpm.sock failed - Web 服务器仍引用 FPM:
nginx.conf里还有fastcgi_pass unix:/run/php/php*-fpm.sock?Apache 的proxy_fcgi模块是否还在启用?得手动注释或删掉 - PHP CLI 还在:
php -v仍能运行,说明核心 PHP 解释器没卸载 —— 这正常,php-fpm和php-cli是分离包,按需保留即可 - 容器环境(Docker):镜像里卸载无效,必须重建镜像;临时容器里停服务即可,无需卸载
真正麻烦的从来不是“怎么卸”,而是“卸完谁还在调它”。多花三十秒查一遍 Nginx/Apache 配置和 socket 路径,比重装系统快得多。











