2011-10-11 296 views
0

我試圖構建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) –

回答

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