彻底卸载php需分步清理:先卸载所有php相关包及扩展,再手动删除配置文件、日志、数据目录和残留进程;集成环境还需清理环境变量、注册表及composer缓存路径。

直接卸载 PHP 包本身不等于清空所有组件
Linux 发行版中,php 通常只是元包或默认版本的入口,真正安装的是 php-cli、php-fpm、php-mysql、php-curl 等具体扩展包。只执行 apt remove php 或 yum remove php 会残留大量已安装的模块、配置文件和二进制文件。
Debian/Ubuntu 下彻底清理 PHP(含扩展与配置)
推荐分步操作,避免遗漏:
- 先列出所有已安装的 PHP 相关包:
dpkg -l | grep php,重点关注带版本号的包(如php7.4-cli、php8.1-opcache) - 批量卸载(以 PHP 8.1 为例):
sudo apt purge php8.1\*—— 注意\*要转义,否则 shell 会提前展开 - 删除残留配置和数据目录:
sudo rm -rf /etc/php/8.1 /var/log/php8.1* /usr/lib/php/8.1 - 清理未被依赖的依赖包:
sudo apt autoremove && sudo apt autoclean
若曾用 Ondrej PPA 安装过 PHP,建议一并执行 sudo add-apt-repository --remove ppa:ondrej/php,再 sudo apt update,防止后续误装。
CentOS/RHEL/Rocky 9+ 使用 dnf 彻底清理
dnf 的元数据比 yum 更严格,但同样不会自动删扩展:
立即学习“PHP免费学习笔记(深入)”;
- 查已安装 PHP 组件:
dnf list installed | grep php - 卸载全部(含 SCL 版本):
sudo dnf remove php\* php-common\* php-cli\* php-fpm\*;注意不要加--allowerasing除非你确认要删其他依赖它的软件 - 手动清理:
/etc/php.d/(INI 片段)、/etc/opt/remi/php*/(如果用 Remi 源)、/opt/remi/php*/root/ - 检查是否残留
php-fpm进程:systemctl list-units | grep php,若有则sudo systemctl stop php-fpm+sudo systemctl disable php-fpm
Windows 或 WAMP/XAMPP 环境不能靠“控制面板卸载”
WAMP、XAMPP、Laragon 等集成环境自带服务管理器和多版本 PHP 切换,仅在控制面板点“卸载”只会删主程序,不会清理注册表项、环境变量、PATH 中的路径、以及 C:\xampp\php\ 或 C:\laragon\bin\php\ 下的旧版本目录。
- 先停止所有相关服务(Apache、MySQL、PHP-FPM)
- 手动删整个 PHP 安装目录(如
C:\xampp\php) - 检查系统环境变量
PATH,删掉指向 PHP 的路径条目 - 搜索注册表(
regedit)中含php或php.ini的键值,尤其关注HKEY_LOCAL_MACHINE\SOFTWARE\PHP和HKEY_CURRENT_USER\Environment
最易被忽略的是:某些 Composer 全局 bin(如 laravel/installer)会硬编码 PHP 路径,清理后运行 composer 可能报 php is not recognized —— 这不是 PHP 没卸干净,而是 Composer 自己缓存了旧路径,需重装或改 COMPOSER_HOME。











