构建php_perl.dll失败

问题描述:

我试图构建php_perl.dll并获取错误,但我对构建这些扩展的理解有限(显然)。所以我需要得到这个编译,或者,也可以指向我预先构建的PHP_perl.dll,它将与PHP 5.2.17一起工作。 http://pecl4win.php.net网站已经死了,我在http://pecl.php.net/package/perl找到的东西也没有多大帮助。构建php_perl.dll失败

我已经安装了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) 

什么我做错了任何想法?

+0

(指定)文件中存在语法错误。仔细检查你是否已经获得了正确的源文件,并且没有被损坏。 – hakre

+0

@hakre - 谢谢。我理解语法错误,但我怀疑php_perl与PHP或Perl的更高版本不兼容,或者我的环境配置错误。希望有人熟悉构建(或获取)此扩展可以识别错误。 –

+0

向[bug跟踪器]报告此错误(https://bugs.php.net/search.php?search_for=&boolean=0&limit=30&order_by=&direction=DESC&cmd=display&status=Open&bug_type=All&package_name [] = perl&php_os =&phpver =&cve_id = &assign =&author_email =&bug_age = 0&bug_updated = 0) –

这个问题没有答案?

我只是稍微修改新的1.0.1 php_perl.c源代码(第31行)解决Windows上的PHP 5.3.13编译错误:

老:

# 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速成SP1的(否则会生成错误),然后卸载任何2008年运行系统,然后安装Windows SDK 6.1(2008服务器)来编译VC9版本。我还使用了ActiveState的Perl安装(版本5.8.0,ActivePerl-5.8.0.805-MSWin32-x86.msi,未用更多版本进行测试)。

然后下载PHP SDK和DEPS从http:/ /pecl.php.net/package/perl,:/ /windows.php.net/downloads/php-sdk/,PHP的人士透露,从HTTP扩展的来源按照本教程中的说明解压缩目录,如上修改php_perl.c。

然后打开Windows SDK的CMD外壳和类型:

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在Windows 7专业版64位,并测试了我的WampServer安装。扩展程序源文件中的.phpt文件对于如何使用它非常明了。

对于信息的文件的另一个版本也适用于此GitHub库的PHP 5.4(HTTPS:/ /github.com/do-aki/php-ext-perl)。

对不起,长的答案,但在Windows安装方面扩展的README文件已经过时,也没有支持,我发现相当跛脚。

Regards