PHP 8.2.32 在 IIS 10 上提示缺少 VC++ 运行库,本质是 php-cgi.exe 启动时无法加载 vcruntime140.dll 等依赖 DLL;必须安装 VC++ 2022 x64 运行库,补全系统 PATH 并启用 IIS 的 CGI 角色,否则 FastCGI 无法调用。

Windows IIS 10 安装 PHP 8.2.32 时提示缺少 VC++ 运行库,本质是 PHP 主程序(php-cgi.exe)或其扩展在加载时找不到依赖的底层 DLL,比如 vcruntime140.dll、msvcp140.dll。PHP 8.2 官方包基于 Visual Studio 2022(VC17)编译,必须安装对应版本的运行库才能启动,否则 IIS FastCGI 直接失败,连 php -v 都无法执行。
确认并安装 VC++ 2022 运行库(x64 必装,x86 建议补全)
PHP 8.2.32 Windows 官方 ZIP 包(如 php-8.2.32-Win32-vs17-x64.zip)明确要求 VC++ 2015–2022 Redistributable(x64)。只装旧版(如 2015/2019)或只装 x86 版本都不够。
- 以管理员身份运行 PowerShell,执行以下两条命令(自动下载 + 静默安装):
安装 x64 版:curl -o vcredist_x64.exe https://aka.ms/vs/17/release/vc_redist.x64.exe && start /wait vcredist_x64.exe /install /quiet /norestart
安装 x86 版(兼容部分扩展或旧组件):curl -o vcredist_x86.exe https://aka.ms/vs/17/release/vc_redist.x86.exe && start /wait vcredist_x86.exe /install /quiet /norestart
安装完成后务必重启电脑——DLL 注册和 PATH 刷新需要系统级生效。
验证 PHP 根目录是否加入系统 PATH
即使 VC++ 运行库已装,PHP 扩展(如 php_curl.dll)还可能依赖额外 DLL(如 libssh2.dll、ssleay32.dll),而 Windows 只在 PATH 和当前目录查找它们。手动解压的 PHP 不会自动配置环境变量。
立即学习“PHP免费学习笔记(深入)”;
- 打开「控制面板 → 系统 → 高级系统设置 → 环境变量」
- 在「系统变量」中找到 Path,点击「编辑」→「新建」
- 填入 PHP 安装根目录(不含
\ext),例如:C:\php82 - 保存后,关闭所有已打开的 CMD/PowerShell/IIS 管理器窗口,再重新打开终端测试
验证方式:新打开 CMD,运行 where vcruntime140.dll,若返回路径包含 C:\php82\,说明 PATH 生效。
检查 IIS 是否启用 CGI 角色且映射到 php-cgi.exe
IIS 10 默认不启用 CGI,而 FastCGI 模块完全依赖它。没启用 CGI,IIS 根本不会调用 php-cgi.exe,也就不会触发后续的 DLL 加载流程——此时错误日志里常出现“模块未注册”或“处理程序未找到”,容易误判为纯 DLL 缺失。
- 打开「服务器管理器」→「添加角色和功能」→「应用程序开发」→ 确保勾选 CGI
- 安装完成后,在 IIS 管理器中,选择服务器节点 →「处理程序映射」→ 查看是否有
FastCgiModule - 添加模块映射时,可执行文件路径必须指向
php-cgi.exe(不是php.exe),路径格式如:C:\php82\php-cgi.exe
如果已配置但无效,可用命令行重置一次:%windir%\system32\inetsrv\appcmd clear config /section:system.webServer/fastCGI%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='C:\php82\php-cgi.exe']
快速定位具体缺失模块(用事件查看器)
弹窗报错代码 0xe00008 或 0xc000007b 时,不要靠猜。直接查系统日志能精准锁定缺哪个 DLL:
- Win+R 输入
eventvwr.msc→ 左侧展开「Windows 日志 → 应用程序」 - 找时间点附近的「错误」条目,双击打开 → 点「详细信息」→ 查「错误模块名称」
- 常见对应关系:
vcruntime140.dll→ 缺 VC++ 2015–2022(x64/x86)msvcr120.dll→ 缺 VC++ 2013(极少见,但某些旧扩展可能依赖)
看到模块名,就只补对应版本,避免盲目安装一堆冗余运行库。



















