Ошибка сборки php_perl.dll

Я пытаюсь собрать php_perl.dll и получаю ошибки, но мое понимание создания этих расширений ограничено (очевидно). Поэтому мне нужно скомпилировать это или, в качестве альтернативы, указать мне предварительно собранную php_perl.dll, которая будет работать с PHP 5.2.17. Сайт http://pecl4win.php.net мертв, и то немногое, что я могу найти на http://pecl.php.net/package/perl тоже мало помогает.

Я установил Perl (пробовал 64-битную, затем x86), PHP (установил с XAMPP) и Visual Studio 6. Windows 7 64-битная. PERL_HOME установлен в c:\perl.

Эта команда

msdev perl.dsp /MAKE "perl - Win32 Release_TS"

Выдает 102 ошибки, например:

--------------------Configuration: perl - Win32 Release_TS--------------------
Compiling...
php_perl.c
C:\Perl\lib\CORE\sys/socket.h(72) : error C2061: syntax error : identifier 'win32_accept'
C:\Perl\lib\CORE\sys/socket.h(72) : error C2059: syntax error : ';'
C:\Perl\lib\CORE\sys/socket.h(72) : error C2146: syntax error : missing ')' before identifier 's'
C:\Perl\lib\CORE\sys/socket.h(72) : error C2061: syntax error : identifier 's'
C:\Perl\lib\CORE\sys/socket.h(72) : error C2059: syntax error : ','
C:\Perl\lib\CORE\sys/socket.h(72) : error C2059: syntax error : ')'
...
C:\Perl\lib\CORE\sys/socket.h(98) : error C2059: syntax error : ')'
C:\Perl\lib\CORE\win32.h(420) : error C2079: 'Wservent' uses undefined struct 'servent'
C:\Perl\lib\CORE\iperlsys.h(1143) : error C2143: syntax error : missing ')' before '*'
C:\Perl\lib\CORE\iperlsys.h(1143) : fatal error C1003: error count exceeds 100; stopping compilation
Error executing cl.exe.

php_perl.dll - 102 error(s), 0 warning(s)

Любые идеи о том, что я делаю неправильно?


person b w    schedule 11.10.2011    source источник
comment
В (названных) файлах есть синтаксические ошибки. Дважды проверьте, что вы получили правильные исходные файлы, и они не были повреждены.   -  person hakre    schedule 11.10.2011
comment
@hakre - спасибо. Я понимаю синтаксические ошибки, но подозреваю, что либо php_perl несовместим с более поздними версиями PHP или Perl, либо моя среда настроена неправильно. Надеялся, что кто-то, знакомый с созданием (или получением) этого расширения, распознает ошибки.   -  person b w    schedule 11.10.2011
comment
Сообщите об этой ошибке по адресу система отслеживания ошибок   -  person Alexandr Ciornii    schedule 11.10.2011
comment
@Alexandr - простите за мое невежество, но это подходящее место для проблем со сборкой в ​​стороннем расширении?   -  person b w    schedule 11.10.2011
comment
По-видимому, для этого уже есть отчет об ошибке.   -  person vstm    schedule 11.10.2011
comment
@vstm - спасибо! Я видел это ранее, но для PHP 5.2 нет разрешения, и я надеялся, что кто-то здесь либо скомпилировал его, либо создал DLL для 5.2.   -  person b w    schedule 11.10.2011


Ответы (1)


Нет ответа на этот вопрос?

Я только что исправил ошибки компиляции для php 5.3.13 в Windows, слегка изменив новый исходный код 1.0.1 php_perl.c (строка 31):

старый:

#  define _WINSOCK2API_           /* using winsock.h instead of winsock2.h */

новый:

#  ifndef _WINSOCK2API_
#       include <winsock2.h>
#  endif

Для компиляции следуйте инструкциям на этой странице (http://www.crazyws.fr/tutos/compiler-php-et-ses-extensions-sur-windows-SJ5GT.html), извините за французский.

В основном установите Visual Studio 2008 Express С пакетом обновления 1 (в противном случае произойдет ошибка сборки), затем удалите любую среду выполнения 2008 года, затем установите Windows SDK 6.1 (2008 Server) для компиляции сборок VC9. Я также использовал установку Perl из ActiveState (версия 5.8.0, ActivePerl-5.8.0.805-MSWin32-x86.msi, не тестировался с другими версиями).

Затем загрузите php sdk и deps с http://windows.php.net/downloads/php-sdk/, исходники php, источники расширения с http:// /pecl.php.net/package/perl, разархивируйте каталоги, как описано в руководстве измените php_perl.c, как указано выше.

Затем откройте оболочку CMD Windows SDK и введите:

setenv /xp /x86 /release
cd <root_directory>
bin\phpsdk_setvars.bat
cd <php_src>
buildconf --force
configure --help
configure --with-perl=shared --with-extra-includes="<perl_lib_CORE_directory>" --with-extra-libs="<perl_lib_CORE_directory>"
nmake php_perl.dll

Я скомпилировал свою dll на 64-разрядной версии Windows 7 Pro и протестировал ее на своей установке WampServer. Файлы .phpt в исходниках расширения говорят сами за себя, как его использовать.

Для информации другая версия файла также доступна для php 5.4 в этом репозитории github (https:///github.com/do-aki/php-ext-perl).

Извините за длинный ответ, но файл README расширения, касающийся установки в Windows, устарел, и нет поддержки, которую я нашел довольно хромой.

С Уважением

person kisskrool    schedule 17.11.2013