【轉】windows下編譯php5.4併產生php_memcache.dll供php5.4使用

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/

相關文章
相關標籤/搜索