如何使用 Visual Studio 2008 SP1 编译 PHP 5.3 和 PHP 5.4 版本 x64?

如何使用 Visual Studio 2008 SP1 编译 PHP 5.3 和 PHP 5.4 版本 x64?

我已经成功编译了 Apache x64,然后在其上使用 PHP 5.3.29 和 5.4.45 版本 x86,并收到错误,提示 DLL 文件不是有效的 Win32 应用程序。我安装了 Visual Studio 2008 SP1、Visual C++ 2008(x64 和 x86)。

我使用的文件列表:

1,php-5.3.29-src.zipphp-5.4.45-src.zip在 windows.php.net 上拍摄的

2、instantclient-sdk-win64-10.2.0.5.zip关于instantclient-sdk-windows.x64-11.2.0.4.0.zipOracle。

编译步骤:

call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64 (I tried using the commands in Visual Studio Tools, it also got the same error)
cd /D C:\php-sdk (I extracted the source file and renamed the directory into php-sdk)
buildconf --force
configure --enable-snapshot-build --disable-isapi --enable-debug-pack --without-mssql --without-pdo-mssql --without-pi3web --with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared --with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared --with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared --enable-object-out-dir=../obj/ --enable-com-dotnet=shared --with-mcrypt=static --disable-static-analyze
  1. 上面的命令是我从 x86 版 php 的命令行中获取的phpinfo()
  2. 我解压缩instantclient-sdk-win64-10.2.0.5.zip后在 中创建一个oracle目录php-sdk,移动了解压的文件夹,然后将其重命名为instantclient10
  3. instantclient11我从 获得它instantclient-sdk-windows.x64-11.2.0.4.0.zip,做着与上面相同的事情。

然后使用:nmake snap

但是我遇到了一个错误:

c:\php-sdk\zend\zend_execute.h(234) : warning C4267: 'function' : conversion fro
m 'size_t' to 'int', possible loss of data
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\
VC\BIN\x86_amd64\cl.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\
VC\BIN\nmake.exe"' : return code '0x2'
Stop.

然后我尝试删除--enable-snapshot-buildconfigure这次我只是使用了nmake。然后我遇到了另一个错误:

ext\mysqlnd\mysqlnd_net.c(31) : fatal error C1083: Cannot open include file: 'zl
ib.h': No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\
VC\BIN\x86_amd64\cl.exe"' : return code '0x2'
Stop.

我认为问题与 zlib 有关,我将其添加--disable-zlibconfigure。这次,构建过程成功了。但是,我只得到了、 、 、 和php5ts.dllphp_com_dotnet.dll(php_oci8.dll构建php_oci8_11g.dll输出目录) 和文件夹中没有 DLL 文件。php.exephp-cgi.exerootext

有人能给我一份像 x86 版本那样的完整构建指南吗?

我将非常感谢您的帮助。

答案1

您的问题似乎是将 64 位 Apache 与 32 位 PHP 混合使用。这是不可能的。

您可以使用 PHP-FPM 或 FastCGI 运行单独的 32 位 PHP。FastCGI 已在所有 PHP 5.x 版本和 PHP-FPM(自 5.3 版起)中提供。但您确实应该升级到支持 PHP版本:截至 2020 年 5 月,PHP 7.3 和 7.4 已获得主动支持,PHP 7.2 获得安全支持。

相关内容