php在windows上需先确认来源再卸载:运行php -v和where php查路径,检查服务进程,停止相关服务后删除目录、清理环境变量及注册表,最后新开终端验证php -v报错且where php无输出才算彻底卸载。

确认 PHP 是怎么装进系统的
Windows 上的 PHP 没有统一安装方式,直接删 C:\php 可能无效,也可能误删别人共用的环境。先搞清来源:是手动解压的?XAMPP/WAMP 带的?还是通过 choco 或 winget 装的?运行 php -v 和 where php,看输出路径;再查任务管理器里有没有 php-cgi.exe、php-fpm.exe 或集成环境的服务进程。
- 如果
where php返回C:\xampp\php\php.exe→ 属于 XAMPP,走集成环境卸载流程 - 如果返回
C:\php\php.exe且没其他服务 → 很可能是手动安装,重点清理目录+环境变量 - 如果提示“不是内部或外部命令”,但
C:\Program Files\PHP存在 → 可能只解压没配环境变量,但仍需手动删残留
停止服务再动手,否则删不动也卸不净
PHP 自身不常驻服务,但和它绑定的组件会——比如 Apache、MySQL、PHP-FPM(尤其 WAMP/XAMPP 启动后会注册为 Windows 服务)。不关服务就删文件,轻则提示“文件正在使用中”,重则卸载后服务仍偷偷拉起旧 PHP。
- 打开任务管理器 → “服务”页签 → 找含
Apache、MySQL、WampServer、XAMPP的服务 → 右键“停止” - 命令行管理员权限运行:
net stop Apache2.4、net stop wampmysqld(服务名以sc query实际查到的为准) - 检查系统托盘:WAMP/XAMPP 图标右键 → “Exit” 或 “Stop All Services”
删目录、清变量、扫注册表,三步缺一不可
只删 C:\php 目录,90% 的人以为卸载完了,结果重启终端还是能跑 php -v——因为 Path 环境变量还留着旧路径;或者某天开个老项目,php.ini 从 C:\Windows\php.ini 加载,根本没走你删掉的目录。
- 删安装目录:手动安装的删
C:\php或C:\Program Files\PHP;XAMPP 删C:\xampp;WAMP 删C:\wamp64 - 清环境变量:右键“此电脑”→属性→高级系统设置→环境变量→在
Path里删所有含php、xampp、wamp的条目;顺手检查有没有PHP_HOME变量一并删掉 - 注册表要扫但别乱删:按
Win + R输入regedit,导出备份后搜索关键词php、xampp、wamp,只删明确属于安装写入的项,例如:HKEY_LOCAL_MACHINE\SOFTWARE\PHP、HKEY_CURRENT_USER\Software\XAMPP;避开ControlSet或Eventlog下非 PHP 主体的键
验证是否真干净:别信感觉,要看命令反馈
很多人删完目录就以为结束了,结果新装的 PHP 运行报错,根源是旧 php.ini 或扩展还在生效。最可靠的验证不是“能不能打开文件夹”,而是终端里敲命令的反应。
立即学习“PHP免费学习笔记(深入)”;
- 新开一个命令提示符(不是原来那个),运行
php -v→ 必须报错'php' is not recognized as an internal or external command - 运行
where php→ 应该无任何输出 - 检查配置加载路径:
php --ini如果还能显示Loaded Configuration File,说明某个php.ini还活着,常见位置:C:\Windows\php.ini、C:\php\php.ini、C:\xampp\php\php.ini,找到就删
最容易被跳过的其实是服务残留和注册表里那些隐藏的 PHP 键值——它们不挡你运行新 PHP,但会在你调试 Web 服务器模块或排查 extension_dir 路径时突然冒出来,指向一个早就不存在的目录。动手前先停服务、动手后必须新开终端验证,这两步漏掉,等于白干。











