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/