虽然 PHP 5.2 已停止维护,但在维护极老旧项目时,仍可能需要在 Windows 上自行编译特定版本。本文记录使用 Visual Studio 2008 + Windows SDK 6.1 编译 PHP 5.2 的完整流程,仅供遗留系统维护参考。
setenv 脚本。php-5.2.x-src.zip,暂不解压。resolv.lib。libxml2、iconv、zlib 等预编译二进制包。建议在 C:\ 下创建统一工作目录:
C:\php5.2-mybuild\
├── win32build\ ← 解压 win32build.zip 至此,含 bin/include/lib
├── bindlib_w32\ ← 解压 bindlib_w32.zip 至此
├── php-src\ ← 解压 PHP 5.2 源码至此
C:\php5.2-mybuild\bindlib_w32 目录。resolv.lib 复制到 C:\php5.2-mybuild\win32build\lib,覆盖原文件。setenv /x86 /xp /release
cd C:\php5.2-mybuild\php-src
buildconf
此步会生成 configure.js,用于后续配置编译选项。
cscript /nologo configure.js --help
cscript /nologo configure.js `
--enable-object-out-dir="C:\php5.2-mybuild" `
--with-php-build="C:\php5.2-mybuild\win32build" `
--disable-all --enable-cli
--enable-object-out-dir:指定中间文件/输出目录,编译后会生成 Release_TS 子目录。--with-php-build:指向 win32build 目录。--disable-all --enable-cli:最小化编译,仅生成 php.exe。nmake
编译过程可能持续数分钟。成功后,可在 C:\php5.2-mybuild\Release_TS 找到 php.exe、php5ts.dll 等产物。
resolv.lib 报错:确认 bindlib_w32 编译成功并正确覆盖。此流程适用于 PHP 5.2.x 版本。若需编译 PHP 5.3+,工具链需升级至 VS2015+ 且依赖库版本不同,不再适用本文步骤。现代项目强烈建议直接使用官方预编译二进制包或 Docker 环境。