Windows 11默认不带PHP,更不预装已停更的PHP 5.6;需手动下载VC11 x86 TS版ZIP包、配置Path环境变量、重命名并修改php.ini(设extension_dir、启用扩展、配置date.timezone)、确保Apache为匹配的VC11编译版并正确加载php5apache2_4.dll。

Windows 11 默认不带 PHP,更不预装 PHP 5.6 —— 这个版本早在 2019 年就停止官方支持,官方下载页 https://windows.php.net/download#php-5.6 已下线,但归档包仍可手动获取。想在 Win11 上跑 PHP 5.6,核心不是“能不能”,而是“要不要”:它能跑,但必须绕过现代系统默认的安全与兼容限制,且无法获得任何更新或安全补丁。
为什么 php -v 报错“不是内部或外部命令”
这是最常见卡点,本质是系统根本找不到 php.exe。PHP 5.6 没有安装器,只有 ZIP 包,解压后不会自动注册路径。你必须手动把含 php.exe 的目录加进系统 Path 环境变量。
- 确认你下载的是 VC11 x86 Thread Safe 版本(不是 NTS),因为 PHP 5.6 的 Apache 模块依赖线程安全运行时;x64 版在 Win11 下容易触发 DLL 加载失败
- 解压路径不能含空格或中文,比如
C:\php56可行,C:\Program Files\php56或C:\我的PHP会大概率导致php --ini找不到php.ini - 添加
Path后,**必须关闭所有已打开的 CMD/PowerShell 窗口**,再新开一个——旧窗口不会读取新环境变量 - 执行
php -v前,先用dir C:\php56\php.exe确认文件真实存在;若提示“系统找不到指定的文件”,说明是 32/64 位运行时缺失,需安装 Microsoft Visual C++ 2012 Redistributable (x86)
php.ini 配置失败导致扩展加载报错
PHP 5.6 解压后只有 php.ini-development 和 php.ini-production,必须重命名为 php.ini 才生效。但光改名不够,几个关键项不调,php -m 会报一堆 Failed loading 或直接崩溃。
在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……
-
extension_dir必须显式指向绝对路径,例如:extension_dir = "C:\php56\ext"(不能写相对路径或带斜杠结尾) - 启用扩展时,去掉分号只是第一步;还要确认对应 DLL 文件真实存在,比如
extension=php_mysqli.dll要求C:\php56\ext\php_mysqli.dll存在,且其依赖的libmysql.dll在系统PATH中(通常复制到C:\php56目录下最省事) -
date.timezone必须设置,否则strtotime()等函数警告频发,写成date.timezone = Asia/Shanghai即可 - 若用 Apache,
PHPIniDir指令在httpd.conf中必须指向同一份php.ini所在目录,否则 Web 和 CLI 加载的是两套配置
Apache 加载 php5apache2_4.dll 失败
PHP 5.6 官方只提供 php5apache2_4.dll(对应 Apache 2.4),但它和 Win11 自带的 Apache 或新版 XAMPP 不完全兼容。错误信息通常是:“The specified module could not be found” 或 “Syntax error on line X of httpd.conf”。
立即学习“PHP免费学习笔记(深入)”;
- 确保 Apache 是 VC11 编译的 2.4.x 版本(如 ApacheLounge 提供的),而非 VC15/VC17 编译版;混用会导致 DLL 依赖链断裂
-
LoadModule行路径必须用双引号包裹,且不能有空格:正确写法是LoadModule php5_module "C:/php56/php5apache2_4.dll"(注意斜杠方向不影响,但反斜杠要转义) - Apache 启动失败时,用命令行执行
httpd -t检查语法,比看服务日志更快定位httpd.conf错误行 - 如果只想跑 CLI 脚本(如 Composer、单元测试),其实完全不用 Apache —— 配好环境变量和
php.ini后,php your_script.php就能直接执行
PHP 5.6 在 Win11 上能跑,但每一步都卡在“历史遗留”上:VC11 运行时、TS 模块、硬编码路径、无 HTTPS 默认支持……真正棘手的从来不是操作步骤,而是当你发现某个扩展死活启不来,翻遍日志只看到一行模糊的“模块加载失败”——这时候你得判断,是该花两小时调 DLL 依赖,还是直接换 PHP 7.4+ LTS 版本省掉所有麻烦。


















