Windows 7 SP1 用户运行 PHP 7.2+ 需先安装 KB2999226 补丁,再安装 VC++ 2015–2019 运行时(vs16),并选用匹配的 PHP 包(如 php-8.1.23-Win32-vs16-x64.zip),三者缺一不可。

这个问题不是 PHP 本身的问题,而是 Windows 系统缺少 Visual C++ 运行时组件导致的,api-ms-win-crt-runtime-l1-1-0.dll 属于 UCRT(Universal C Runtime),从 Windows 10 开始内置,但旧系统(如 Windows 7 SP1)需要手动补全。
Windows 7 必须安装 KB2999226 补丁
这是最常见也最容易被跳过的一步。PHP 7.2+ 和所有新版 Windows 二进制包都依赖此更新,未安装会导致启动 php.exe 直接报错“找不到指定模块”或弹窗提示缺失 api-ms-win-crt-runtime-l1-1-0.dll。
- 必须先确认系统已装 Windows 7 SP1(非 SP1 不支持该补丁)
- 下载地址:微软官方 KB2999226(x64 或 x86 版本需与你的系统位数一致)
- 安装后必须重启,否则 DLL 不会注册进系统路径
- 若通过 Windows Update 安装失败,建议用离线安装包(
wu_web.exe方式常静默失败)
安装 Visual C++ 2015–2022 运行时(推荐全装)
即使 KB 补丁已装,部分 PHP 扩展(如 php_curl.dll、php_openssl.dll)仍可能链接到 MSVCRT 的不同版本,单独装运行时更稳妥。
- 去微软官网下载
vc_redist.x64.exe和vc_redist.x86.exe(即使 64 位系统也建议两个都装——PHP 解释器是 64 位,但某些扩展或调用的 DLL 可能是 32 位) - 安装顺序无关,但建议先装 2015–2019,再装 2022(后者向后兼容,但不替代前者)
- 不要只装“最新版”,
php-8.2.12-Win32-vs16-x64.zip明确依赖 VS2019(即 2015–2019 运行时),vs16 = Visual Studio 2019 编译
检查系统 PATH 和 DLL 加载路径
补丁和运行时装完仍报错?可能是 PHP 启动时没找到 DLL,或被错误版本劫持。
立即学习“PHP免费学习笔记(深入)”;
- 运行
echo %PATH%,确认没有指向老旧 VC 运行时的自定义路径(比如某软件自带的msvcr120.dll目录) - 用
where api-ms-win-crt-runtime-l1-1-0.dll查看系统是否真能找到该 DLL(正常应返回C:\Windows\System32\api-ms-win-crt-runtime-l1-1-0.dll) - 若返回空,说明 KB 补丁未生效或系统文件损坏,可尝试运行
sfc /scannow - 不要手动下载网上流传的单个 DLL 文件丢进
System32——这大概率引发签名验证失败或版本冲突
PHP 下载包选型要匹配编译环境
下载页面里一堆 vs15 / vs16 / vs17 标签,不是随便选的。选错等于白装运行时。
-
vs15→ Visual Studio 2015 → 需要 VC++ 2015 运行时 -
vs16→ Visual Studio 2019 → 需要 VC++ 2015–2019 运行时 -
vs17→ Visual Studio 2022 → 需要 VC++ 2015–2022 运行时 - Windows 7 用户请勿下载 vs17 包(官方已明确不支持),哪怕它看起来“更新”
- PHP 官网下载页底部有表格注明各版本对应系统要求,
php-8.1.23-Win32-vs16-x64.zip一行写着 “Requires: Windows 7 SP1 or newer”
真正卡住的人,往往是在没装 KB2999226 的前提下反复重装 VC 运行时,或者下了 vs17 包硬跑在 Win7 上。补丁、运行时、PHP 包三者版本对不上,任何一环断掉都会回到原点。











