Heim >Backend-Entwicklung >PHP-Tutorial > 在Windows上编译安装AMFEXT for PHP5.3

在Windows上编译安装AMFEXT for PHP5.3

WBOY
WBOYOriginal
2016-06-13 13:02:16975Durchsuche

在Windows下编译安装AMFEXT for PHP5.3
AMFEXT官方未提供PHP5.3版的dll文件,不得不自己动手编译,以下是编译小记:

1. 下载必要的软件.
1). PHP5.3 for Win32二进制和源代码各一份
2). VC6或以上IDE
3). Cygwin.
4). 两个必要的包
http://www.php.net/extra/bindlib_w32.zip
http://www.php.net/extra/win32build.zip
5). 下载amfext 0.9.2-dev版

2. 解压缩软件到适当目录
1). 解压缩php二进制代码到e:\php5.3.6目录(其实我们只感兴趣dev子目录下的php5ts.lib文件)
2). 解压缩php源代码到e:\php5.3.6-sources目录
3). 解压缩amfext 0.9.2到e:\php5.3.6-sources\ext\amfext目录下
4). 解压缩bindlib_w32.zip和win32build.zip到同样目录(如:c:\win32build)
设置路径set path=%path%;c:\win32build\bin

3. 编译amfext VC工程
1). 打开amfext.dsp工程文件
2). 设置工程
Project->Settings(Win32 Release)->Link 为:e:\php5.3.6\dev\php5ts.lib
Build->Set Active Project Configuration选中amftext - Win32 Release.
3). 编译amfext
由于amfext for php5.3有个bug,所以编译之前要修改amf.c

    //On line 1188, replace:  
    int deallocResult = (*struc)->refcount;  
    //with  
    int deallocResult = Z_REFCOUNT_PP(struc); 
    
    //On line 2674, replace:
    newval->refcount--;
    //with
    Z_DELREF_P(newval);

现在按F7编译工程,提示
Cannot open include file: '../main/config.w32.h',提示找不到文件,到php源代码的字母main目录下一看,果然没有这个文件,要自己生成这个文件:
步骤1. 到PHP源代码根目录执行buildconf.bat
步骤2. 到PHP源代码根目录执行configure.bat(或者执行 cscript /nologo configure.js --with-php-build="../win32build" --without-libxml  --disable-odbc)
如果没有之前的set path=%path%;D:\win32build\bin会出现如下提示:
Checking for bison.exe ...
ERROR: bison is required

重新编译工程,报错。一大堆的php_stream_transport.h error
形如
..\..\main\streams/php_stream_transport.h(85) : error C2143: syntax error : missing ')' before '*'
..\..\main\streams/php_stream_transport.h(85) : error C2081: 'socklen_t' : name in formal parameter list illegal

这是由于找不到宏报的语法错误。打开这个文件,添加
typedef int socklen_t;

到文件头部。

重新编译工程,不出意外在php源代码ext子目录就可以看到php_amf.dll

1 楼 wanluoliang 2011-07-12  
非常感谢你的教程。。。。。。。。。。。。。。

2 楼 live711 2011-08-13  
你编译的dll能下载过来直接用吗?
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn