如何卸载PHP-FPM服务_停止并移除PHP进程管理【方法】

7次阅读

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

如何卸载PHP-FPM服务_停止并移除PHP进程管理【方法】

怎么确认 PHP-FPM 正在运行

别急着卸载,先看它是不是真在跑。很多人以为自己装了 PHP-FPM,其实只是编译过、没启用,或者用的是 apachemod_php 而非 FPM 模式。

  • 查进程:ps aux | grep php-fpm —— 注意看有没有 master 进程和 worker 子进程
  • 查监听端口:ss -tlnp | grep :9000(默认端口)或 ss -tlnp | grep php
  • 查服务状态(systemd 系统):systemctl status php-fpmsystemctl 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 应返回 inactivesystemctl is-enabled php-fpm 应返回 disabled
  • 注意:某些发行版(如 centos Stream 9)默认用 php-fpm,而 ubuntu/debian 常用 php*-fpm,名字错一个就操作失败

彻底卸载 PHP-FPM 及关联 PHP 包

只删 php-fpm 包,往往留一 PHP 核心模块(如 php-cliphp-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-fpmphp-cli 是分离包,按需保留即可
  • 容器环境(docker):镜像里卸载无效,必须重建镜像;临时容器里停服务即可,无需卸载

真正麻烦的从来不是“怎么卸”,而是“卸完谁还在调它”。多花三十秒查一遍 Nginx/Apache 配置和 socket 路径,比重装系统快得多。

text=ZqhQzanResources