必须先安装kb2999226和kb2919355补丁(按序安装并重启),再装vc++ 2015–2022运行库,否则php 7.2因缺失universal crt无法启动;需选用ts版php、正确配置extension_dir等参数,并确保apache模块路径与handler绑定无误。

Windows 7 SP1 是硬性前提,没装 SP1 的机器连 KB2999226 都装不上,PHP 7.2 根本跑不起来。
必须先打两个系统补丁(KB2999226 + KB2919355)
PHP 7.2 依赖 Windows 7 的 UCRT(Universal C Runtime),而原生 Win7 SP1 不带这个组件。不装补丁,双击 php-cgi.exe 或启动 Apache 时会直接报错:api-ms-win-crt-runtime-l1-1-0.dll is missing 或类似 API-MS-WIN 开头的加载失败。
- 必须严格按顺序安装:
KB2999226→ 重启 →KB2919355→ 再重启 - 补丁架构要和系统一致:x86 系统装
KB2999226-x86.msu,x64 系统装KB2999226-x64.msu - 千万别从第三方网站下载单个
api-ms-win-*.dll手动丢进C:\xampp\或 PHP 目录——这会导致 Apache 启动后秒崩
选对 PHP 包:VC15 + x64/x86 + TS 版本(Apache 场景)
Win7 下用 Apache 搭配 PHP 7.2,必须选 Thread-Safe(TS)版本,否则 php7apache2_4.dll 加载失败,httpd.exe 启动时报错或静默退出。
- 去
https://windows.php.net/download/找PHP 7.2.33 (VC15, x64, Thread Safe)ZIP 包(不是 MSI) - 别选 NTS:NTS 是给 IIS + FastCGI 用的,Apache mod_php 必须用 TS
- VC 运行库要匹配:装完补丁后,仍需手动安装
vc_redist.x64.exe(VC15 对应 VS2015–2019 工具链) - 验证方式:命令行运行
php -i | findstr "Thread Safety",输出应为enabled
php.ini 关键配置不能只改 extension_dir
很多教程只说把 php.ini-development 改名、开 extension=mysqli 就完事,但 Win7 下漏掉这几项,phpinfo() 能显示,网站却必挂:
-
extension_dir = "C:\php\ext"—— 必须写绝对路径,留"ext"或相对路径,所有扩展(mysqli、mbstring)全加载失败 -
date.timezone = Asia/Shanghai—— 不设时区,date()、strtotime()报 Warning,部分 CMS 安装向导直接中断 -
session.save_path = "D:\phpsessiontmp"—— Win7 默认无写入权限,得提前新建该目录并赋予IIS_IUSRS或Users组修改权限 -
upload_tmp_dir = "D:\phpfileuploadtmp"—— 文件上传功能依赖此路径,否则$_FILES始终为空
Apache 配置里最容易漏掉 LoadModule 路径和 AddHandler
Win7 下 Apache 2.4 加载 PHP 模块失败,90% 是因为路径写错或 Handler 没绑定。别信“复制粘贴就完事”的配置片段。
-
LoadModule php7_module "C:/php/php7apache2_4.dll"—— 路径必须是正斜杠或双反斜杠,且 DLL 文件名必须与 PHP 包内一致(比如 7.2.33 对应的是php7apache2_4.dll,不是php7apache2_4.dll的旧变体) -
AddHandler application/x-httpd-php .php—— 缺少这行,.php文件会被当成纯文本下载 -
PHPIniDir "C:/php"—— 显式指定php.ini位置,避免 Apache 读错配置(尤其当你装了多个 PHP 版本时) - 改完
httpd.conf后,务必用命令行测试:httpd -t检查语法,再httpd -k restart重启,别只点控制面板按钮
Win7 SP1 上跑 PHP 7.2,最易被忽略的是补丁顺序和 VC 运行库的隐式依赖——哪怕所有配置都对,缺一个 KB 补丁或一个 vc_redist,php-cgi.exe 就起不来,Apache 日志里只有一行 AH00411: Failed to load module php7_module,查半天发现是系统级 DLL 缺失。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











