停止PHP解析实质是终止php-cgi.exe进程:通过任务管理器或taskkill /f /im php-cgi.exe结束进程,Nginx将因上游断连返回502;如需彻底禁用,应注释nginx.conf中location ~ .php$块并reload配置。

停止 PHP 解析本身不是 Nginx 的直接操作,因为 Nginx 本身不解析 PHP —— 它只是将 PHP 请求(如 .php 文件)通过 FastCGI 协议 转发给外部的 PHP 处理器(如 php-cgi.exe 或 php-fpm 的 Windows 兼容变体)。所以“停止 PHP 解析”,实质是停止 PHP 的 FastCGI 进程,而非 Nginx 本身。
确认 PHP 是如何运行的
Windows 下常见两种 PHP 启动方式:
-
php-cgi.exe 长期运行模式:例如用命令启动:
php-cgi.exe -b 127.0.0.1:9000,此时它作为一个独立的监听进程等待 Nginx 转发请求 - 按需启动(spawn-fcgi 类似逻辑,但 Windows 不原生支持):较少见,多数开发环境采用第一种
你需要先判断当前是否在运行 php-cgi。打开任务管理器 → “详细信息”页,查找 php-cgi.exe 进程;或在命令行执行:tasklist /fi "imagename eq php-cgi.exe"
停止 PHP FastCGI 进程
找到对应进程后,推荐以下安全停止方式:
立即学习“PHP免费学习笔记(深入)”;
- 若 php-cgi 是手动启动的(例如在 CMD 中运行),直接在该窗口按 Ctrl+C 即可退出
- 若已后台运行且找不到原窗口,使用命令终止:
taskkill /f /im php-cgi.exe - 如果使用了批处理或脚本启动多个实例,建议加
/t参数确保子进程一并结束:taskkill /f /t /im php-cgi.exe
执行后,Nginx 仍正常运行,但访问 PHP 页面会返回 502 Bad Gateway(因 upstream 连接被拒绝),这说明 PHP 解析已停止。
检查 Nginx 配置中是否启用 PHP
即使 PHP 进程已停,只要 Nginx 的 server 块里还保留类似下面的 location 配置,它仍会尝试转发:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
如需临时禁用 PHP 解析,可注释或删除该 location 块,然后执行:nginx -s reload —— 此时 Nginx 不再把 .php 请求发给 PHP,用户访问会直接返回 404 或静态文件内容(取决于其他配置)。
重启 PHP 时的注意事项
重新启动 php-cgi 前,请确保:
- 端口未被占用(如 9000):可用
netstat -ano | findstr :9000检查 - PHP 的 php.ini 已正确配置(尤其
extension_dir和必要扩展如php_mysqli.dll) - Nginx 配置中的
fastcgi_pass地址与 php-cgi 启动监听地址完全一致(IP + 端口)
启动示例:php-cgi.exe -b 127.0.0.1:9000 -c C:\php\php.ini



















