Linux下彻底卸载PHP需先区分安装方式:包管理器安装用apt/yum/dnf反向清理依赖,源码安装则手动删除prefix目录、链接、配置及服务;最后验证命令、进程、服务及Web服务器模块是否清空。

Linux 下卸载 PHP 并不等于只删掉 php 命令,真正干净移除需要分清安装来源(包管理器 vs 源码编译),否则残留配置、扩展、服务或依赖会干扰后续重装或系统稳定性。
确认 PHP 安装方式和当前版本
盲目执行 apt remove php 或 yum remove php 可能只删主包,漏掉 php-cli、php-fpm、libphp 等关键组件。先查清楚:
- 运行
which php和php -v看路径和版本 - Debian/Ubuntu:用
dpkg -l | grep php列出所有 PHP 相关包 - RHEL/CentOS/Rocky:用
rpm -qa | grep php - 若
/usr/local/bin/php存在,大概率是源码编译安装,包管理器命令无效
用 apt/yum/dnf 彻底卸载 PHP(包管理器安装)
包管理器安装的 PHP,必须按「反向依赖链」清理,否则 php-common、php-xml 这类底层包可能被其他软件依赖而保留。
- Ubuntu/Debian:
sudo apt purge $(dpkg -l | grep '^ii php' | awk '{print $2}') && sudo apt autoremove -y - CentOS 7:
sudo yum remove $(rpm -qa | grep '^php') && sudo yum autoremove -y - RHEL 8+/Rocky 9:
sudo dnf remove $(dnf list installed | grep php | awk '{print $1}' | sed 's/\.x86_64//; s/\.aarch64//'),再加sudo dnf autoremove - 注意:不要手动删
/etc/php/或/usr/lib/php/,purge或remove通常已包含配置清理;但若需彻底,可后续手动rm -rf /etc/php/ /usr/lib/php/ /var/lib/php/
源码编译安装的 PHP 怎么卸载
源码安装没有包管理器记录,卸载只能靠「反向操作」:进原编译目录执行 make uninstall(仅当 Makefile 支持),否则只能手动清理。
立即学习“PHP免费学习笔记(深入)”;
- 检查安装前 configure 的
--prefix参数(如--prefix=/usr/local/php),然后sudo rm -rf /usr/local/php - 删二进制链接:
sudo rm -f /usr/bin/php /usr/bin/phpize /usr/bin/php-config - 删 ini 文件:
sudo rm -f /usr/local/lib/php.ini /usr/local/etc/php-fpm.conf - 删 systemd 服务(如有):
sudo systemctl stop php-fpm && sudo systemctl disable php-fpm && sudo rm -f /etc/systemd/system/php-fpm.service - 最后检查
echo $PATH和~/.bashrc是否还存在手动添加的 PHP 路径
验证是否真卸干净
卸完别急着重装,先确认残留——很多“卸载失败”其实是 PATH 缓存或旧二进制未清导致的假象。
- 运行
command -v php、command -v php-fpm,应无输出 - 执行
php -v应报command not found,而非版本号 - 检查
ps aux | grep php和systemctl list-units | grep php,确认无进程或服务残留 - 若曾用 Ondrej PPA(Ubuntu)或 Remi 仓库(RHEL),记得
sudo add-apt-repository --remove ppa:ondrej/php或sudo dnf config-manager --disable remi-php*,避免下次apt update又拉回旧包
最常被忽略的是 Web 服务器模块(如 Apache 的 libphp.so 或 Nginx 的 FastCGI 配置),它们不会随 PHP 包自动卸载,得手动注释或删除对应配置行,否则重启服务时可能报错。











