关键在于php-cgi.exe稳定运行与nginx.conf中fastcgi配置严格对齐:必须用ts版php 7.4.33、php.ini重命名正确且extension_dir为绝对路径、php-cgi.exe需带-c参数指定配置文件启动,fastcgi_pass地址和script_filename路径须与实际监听端口及root完全一致,否则必现502或“no input file specified”。

Win7纯净版手动搭建 PHP + Nginx 环境,关键不是“能不能装”,而是“php-cgi.exe 能不能稳定跑起来、nginx.conf 里那几行 FastCGI 配置有没有写错路径和端口”。绝大多数失败都卡在这两点,不是版本不兼容,是配置细节没对齐。
php-cgi.exe 启动失败的典型现象和修复
双击 php-cgi.exe -b 127.0.0.1:9000 没反应、一闪退,或报错“找不到指定模块”“无法启动此程序,因为计算机中丢失 php5ts.dll”——这基本等于没配好 php.ini 或环境变量。
-
php.ini必须存在且命名正确:把php.ini-development或php.ini-production直接重命名为php.ini,不能留后缀,也不能用记事本另存为带 BOM 的 UTF-8 -
extension_dir必须是绝对路径,且指向真实存在的ext文件夹,例如:extension_dir = "D:\wnmp\php\ext"(注意双反斜杠或正斜杠均可,但不能漏掉盘符) - 如果用的是 VC11/VC14 编译的 PHP(如 5.6.x / 7.0.x),必须安装对应版本的 Microsoft Visual C++ Redistributable,Win7 SP1 默认不带,缺这个就会弹 DLL 错误
- 推荐用命令行启动并观察输出:
D:wnmpphpphp-cgi.exe -b 127.0.0.1:9000 -c D:wnmpphpphp.ini,窗口不闪退才说明基础可运行
nginx.conf 中 FastCGI 配置最容易错的三处
改完配置后访问 .php 文件返回 502 Bad Gateway 或 404,大概率是下面这几行没对上:
-
fastcgi_pass地址必须和php-cgi.exe监听的地址完全一致,比如你启的是-b 127.0.0.1:9001,这里就不能写127.0.0.1:9000 -
fastcgi_param SCRIPT_FILENAME值必须展开为真实物理路径,$document_root$fastcgi_script_name是安全写法;千万别手写成/scripts$fastcgi_script_name(这是旧教程坑) -
root指令在location ~ .php$块里不是必须的,但一旦写了,就必须和外层location /的root一致,否则SCRIPT_FILENAME拼出来就是错路径,导致 No input file specified
Win7 SP1 下 PHP 版本与线程安全(TS/NTS)选择
Win7 纯净版没装过任何 VC 运行库,别碰 PHP 8+;PHP 7.4 是最后一个官方提供 Windows 二进制包并支持 Win7 的版本。再往后,连 php-cgi.exe 都会直接拒绝启动。
- 选
VC15 x64 Thread Safe(TS)版 PHP —— Nginx + FastCGI 场景必须用 TS,NTS 是给 Apache mod_php 或 CLI 用的 - 下载地址认准官网 windows.php.net/downloads/releases/,别从第三方镜像下,有些包被魔改过,缺失
php-cgi.exe - PHP 5.6/7.0/7.1/7.2/7.3/7.4 都能跑,但越新越要确认是否含
php-cgi.exe;PHP 7.4.33 是目前最稳的收尾版本
真正卡住人的,从来不是“哪一步该点下一步”,而是 php-cgi.exe 启动时黑窗一闪而过没看清报错,或是 nginx.conf 里多了一个空格、少了一个分号、路径用了中文、反斜杠没转义。动手前先在 CMD 里手动跑通 php-cgi,再 reload nginx,比反复重启服务有用得多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











