Назад | Перейти на главную страницу

Как скомпилировать PHP 5.3 и PHP 5.4 выпуска x64 с Visual Studio 2008 SP1?

Я успешно скомпилировал Apache x64, затем использую PHP 5.3.29 и 5.4.45 release 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
  1. Приведенную выше команду я взял из командной строки php, выпущенного x86 на 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-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, php.exe и php-cgi.exe. Нет файлов DLL в root (построить выходной каталог) и ext папка.

Может ли кто-нибудь дать мне полное руководство по сборке, например, выпуск x86?

Буду признателен за вашу помощь.

Кажется, ваша проблема заключается в смешивании 64-битного Apache с 32-битным PHP. Это невозможно.

Вы можете запустить отдельный 32-битный PHP с PHP-FPM или FastCGI. FastCGI доступен во всех версиях PHP 5.x и PHP-FPM, начиная с 5.3. Но вам действительно стоит перейти на поддерживаемый PHP версия: по состоянию на май 2020 года PHP 7.3 и 7.4 имеют активную поддержку и поддержку безопасности PHP 7.2.