windows下编译php5.4出php_memcache.dllphp
参考:http://97dst.com/thread-21-1-1.htmlhtml
1.下载及安装shell
(1)安装Visual C++ 2008 Express Edition with SP1 express
下载地址: http://www.microsoft.com/visualstudio/en-us/products/2008-editions/expresswindows
注意: 是在线安装包,安装很是慢,大约得安装一天,请耐心等待.安全
(2)安装windows SDK 6.1开发包session
下载地址: http://www.microsoft.com/en-us/download/details.aspx?id=11310#Overview测试
注意:是在线安装包,安装很是慢,大约得安装一天,请耐心等待.ui
(3)下载php源包:php5.4-201206230730.tar.gz (tar.gz) spa
下载地址: http://snaps.php.net/
下载php sdk:deps-5.4-vc9-x86.7z
下载地址:http://windows.php.net/downloads/php-sdk/
下载php sdk:php-sdk-binary-tools-20110915.zip
下载地址:http://windows.php.net/downloads/php-sdk/
(4)下载memcache-2.2.6.tgz
下载地址: http://pecl.php.net/package/memcache
2. 部署编译环境
(1)在D盘建立文件夹php_sdk
(2)解压php-sdk-binary-tools-20110915.zip 到php_sdk里(注意,bin,script.share在php_sdk根目录哦)
(3)在开始菜单中找到microsoft windows sdk v6.1=>打开cmd shell,执行下面命令
C:\Windows\system32> d:
D:\> cd php_sdk
D:\php_sdk> setenv /x86 /xp /release
D:\php_sdk> bin\phpsdk_setvars.bat
D:\php_sdk> bin\phpsdk_buildtree.bat php54dev
这时会出现D:\php_sdk\php54dev目录.
(4)进入D:\php_sdk\php54dev\vc9\x86下
解压deps-5.4-vc9-x86.7z 覆盖原本已存在deps.
解压php5.4-201206230730.tar.gz 后目录为D:\php_sdk\php54dev\vc9\x86\php5.4-201206230730
建立pecl文件夹,并把memcache-2.2.6.tgz解压进去,改变默认名后目录结构为:D:\php_sdk\php54dev\vc9\x86\pecl\memcache
建立obj文件夹,供编译使用: D:\php_sdk\php54dev\vc9\x86\obj
(5)在(3)步中打开的cmd shell里执行下面命令:
> cd php54dev\vc9\x86\php5.4-201206160330
> buildconf
> configure --help >..\configure_help.txt
注意:此行会产生D:\php_sdk\php54dev\vc9\x86\configure_help.txt文件,在config出错时要屡次参考里面的说明.
> configure --disable-all --enable-snapshot-build --enable-cli --enable-cgi --enable-memcache=shared --enable-object-out-dir=..\obj --enable-session --disable-zts
注意:特别要注意最后--disable-zts,这是供fastcgi使用的非线程安全版nts版,若是没有此选项默认产生的是线程安全ts版.
> nmake
> nmake snap
(6)在D:\php_sdk\php54dev\vc9\x86\obj\Release下已出现php_memcache.dll,把它copy到你正在使用的php/ext下.
修改你正在使用的php.inir:extension=php_memcache.dll
打开phpinfo页看一下是否已有memcache块.
编译ts版的后记:
1.当编译ts版时(即没有--disable-zts时)会出现一些错误
..\pecl\memcache\memcache.c(1970) : error C2198: “zend_list_insert”: 用于调用的参数太少
解决:
打开pecl\memcache\memcache.c文件,找到error行,加在第二个参数后面加" TSRMLS_CC":
如改zend_list_insert(mmc, le_pmemcache); 为 zend_list_insert(mmc, le_pmemcache TSRMLS_CC);
从新config,nmake生成.
2.当编译ts版时,把dll移到你正在使用的php目录下后,测试时出现
若是报错"没法定位程序输入点zend_new_interned_string于动态连接库php55s.dll"
解决:
把php55s.dll也复制到你要使用的php目录下.
来源:http://fengzheng369.blog.163.com/blog/static/752209792012525115254998/