最稳妥方式是用taskkill命令批量强制终止:执行taskkill /f /im php-cgi.exe、taskkill /f /im xxfpm.exe、taskkill /f /im runhiddenconsole.exe,并用tasklist确认清空;若为nssm服务则需net stop或sc stop对应服务名。

直接关闭 php-cgi 进程,最稳妥的方式是用命令行强制终止,而不是靠关窗口或任务管理器点“结束任务”——因为 php-cgi 常被 xxfpm、RunHiddenConsole 或服务封装起来,单独杀一个 php-cgi.exe 可能立刻被守护进程拉起,看似关了,几秒后又回来。
用 taskkill 批量精准关闭
打开管理员权限的命令提示符(CMD 或 PowerShell),执行:
-
关所有 php-cgi 进程:
taskkill /F /IM php-cgi.exe -
连带关 xxfpm(如果用了它):
taskkill /F /IM xxfpm.exe -
再关 RunHiddenConsole 启动的后台进程(避免残留):
taskkill /F /IM RunHiddenConsole.exe
加 /F 是强制,确保不弹窗、不等待。执行后无报错即成功。可再输 tasklist | findstr "php-cgi\|xxfpm\|RunHidden" 确认是否清空。
如果你是用 NSSM 安装为 Windows 服务
那就不是普通进程,得按服务方式停:
- 查服务名:
sc queryex type= service state= all | findstr "php\|PHP" - 停止服务(假设服务名为
php-cgi-service):net stop php-cgi-service或sc stop php-cgi-service - 如需彻底卸载该服务:
nssm remove php-cgi-service confirm
别忽略启动脚本里的隐藏依赖
很多用户写好 start_nginx.bat,却没配对应的 stop_nginx.bat。典型错误是只 kill php-cgi,但忘了 nginx 仍在监听 9000 端口,下次启动时会因端口占用失败。建议 stop 脚本包含:
taskkill /F /IM nginx.exetaskkill /F /IM php-cgi.exetaskkill /F /IM xxfpm.exe- (如有)
taskkill /F /IM RunHiddenConsole.exe
保存为 stop.bat,双击运行比手敲更可靠。
关之前先检查有没有其他 PHP 实例在跑
尤其当系统里混着 XAMPP、WAMP、PhpStudy 或手动解压多个 PHP 版本时,where php 和 tasklist | findstr php 可能显示多个路径和 PID。建议逐个确认来源,避免误关别人正在用的环境。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











