windows 7 的 iis 7.5 仅支持 php 5.6 或 7.0–7.2(x86 nts 版),因 abi 不兼容无法运行 php 7.3+;必须用 x86 版本、正确配置 fastcgi.impersonate=1、extension_dir 绝对路径及 date.timezone,禁用 webpi 防配置污染。

Windows 7 上用 IIS 搭 PHP,根本问题不是“能不能装”,而是 IIS 版本锁死了 PHP 的可选范围——Win7 自带 IIS 7.5,它不支持 PHP 8.x 的原生 FastCGI 模块加载方式,也不识别 php-cgi.exe 在新版中的导出符号结构。你配完 applicationHost.config,看到 500.19 错误或“Handler “PHP-FastCGI” has a bad module “FastCgiModule””这类提示,基本可以判定是模块注册与 IIS 7.5 的 ABI 不匹配。
IIS 7.5 只能跑 PHP 5.6 或 7.0–7.2(非线程安全版)
这是硬性限制,不是配置技巧能绕开的。IIS 7.5 的 FastCGI 模块只接受特定签名的 CGI 可执行文件,PHP 7.3+ 开始改用 php-cgi.exe 的新入口函数约定(如 main() 替代 __cdecl main()),而 IIS 7.5 的宿主进程 w3wp.exe 在加载时会校验调用约定和 CRT 运行时版本。实测下来:
- PHP 5.6.40 NTS(x86):稳定运行,
php.ini中必须设fastcgi.impersonate = 1 - PHP 7.0.33 / 7.1.33 / 7.2.34 NTS(x86):可用,但需手动注册
php-cgi.exe到 IIS 的 FastCGI 设置页,不能依赖 Web Platform Installer 自动配置 - PHP 7.3+:启动即报错
0xc000007b或直接拒绝加载,即使把php7.dll放进 system32 也无效
必须用 x86(32位)PHP,哪怕系统是 Win7 x64
IIS 7.5 在 Win7 上默认以 32 位工作进程运行(Enable 32-Bit Applications = True),而 PHP 官方从 7.2 开始就不再提供 x86 的完整二进制包(仅存于旧归档)。如果你误用了 x64 版 PHP,会出现两种典型现象:
HTTP Error 500.0 - Handler "PHP-FastCGI" has a problem connecting to the FastCGI process- 事件查看器中 Application 日志出现
Failed to start process with commandline 'C:phpphp-cgi.exe -c C:phpphp.ini', ErrorCode = '0x800700c1'
这个 0x800700c1 就是典型的“架构不匹配”错误码。解决办法只有一个:php-7.2.34-Win32-VC15-x86.zip 必须下载,解压路径不能含中文或空格,且要确保 php-cgi.exe 所在目录已加入系统 PATH(用于 IIS 启动时定位)。
php.ini 配置里三个关键项不能漏
IIS 7.5 不像 Apache 那样自动读取 .htaccess 或继承环境变量,它完全依赖 php-cgi.exe 启动时传入的 -c 参数所指向的配置文件。常见失效点:
-
extension_dir = "C:phpext":路径必须是绝对路径,反斜杠要双写("C:\php\ext")或用正斜杠("C:/php/ext") -
fastcgi.impersonate = 1:不设此项,PHP 脚本将以 IIS_IUSRS 权限运行,无法访问用户目录或网络共享 -
cgi.force_redirect = 0:IIS 自己处理重定向,设为 1 会导致所有请求返回 404
另外,date.timezone 必须显式设置(如 date.timezone = "Asia/Shanghai"),否则 getdate() 等函数会触发警告并可能中断 FastCGI 进程。
别碰 Web Platform Installer(WebPI)
Win7 下 WebPI 默认推送的是 PHP 7.4+ 和 IIS 8 兼容包,它会偷偷修改你的 applicationHost.config,加入 IIS 7.5 不识别的 <fastcgi></fastcgi> 子节点属性(如 activityTimeout、requestTimeout),导致整个站点启动失败。一旦你看到 Configuration error: Cannot read configuration file,立刻用记事本打开 %windir%System32inetsrvconfigpplicationHost.config,搜索 <fastcgi></fastcgi>,删掉所有带 processModel 或 environmentVariables 的嵌套节点,只保留最简结构:
<fastcgi><application fullpath="C:phpphp-cgi.exe" arguments="-c C:phpphp.ini"></application></fastcgi>
最后提醒一句:IIS 7.5 的日志默认关着,务必在 IIS 管理器 → 站点 → 右键“编辑网站” → “日志” → 勾选“启用日志记录”,否则你连 500.19 错误具体哪一行出问题都看不到。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











