我已经成功编译了 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.zip
我php-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.zip
Oracle。
编译步骤:
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
- 上面的命令是我从 x86 版 php 的命令行中获取的
phpinfo()
。 - 我解压缩
instantclient-sdk-win64-10.2.0.5.zip
后在 中创建一个oracle
目录php-sdk
,移动了解压的文件夹,然后将其重命名为instantclient10
。 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-build
,configure
这次我只是使用了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-zlib
到configure
。这次,构建过程成功了。但是,我只得到了、 、 、 和php5ts.dll
。php_com_dotnet.dll
(php_oci8.dll
构建php_oci8_11g.dll
输出目录) 和文件夹中没有 DLL 文件。php.exe
php-cgi.exe
root
ext
有人能给我一份像 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 获得安全支持。