windows下配置php5.5開發環境及開發擴充_php技巧

來源:互聯網
上載者:User

網上的教程是比較多的,但是我發現在windows下的擴充開發比較少,而且大多都是php5.3版本以前的,今天我就給大家講解一下php擴充開發,我就拿php5.5的版本來說明一下的了

windows環境(我個人的)

複製代碼 代碼如下:

windows 8.1 企業版(mac os Boot Camp安裝的)
Visual Studio 2012 版本
msysgit  (http://msysgit.github.io/ 下載)
php-sdk-binary-tools-20110915.zip (http://windows.php.net/downloads/php-sdk/下載)
deps-5.5-vc11-x86.7z                  (http://windows.php.net/downloads/php-sdk/下載)
php-5.5.20                        (http://php.net/downloads.php下載,這個版本不定自己選擇)

第一步
解壓php-sdk-binary-tools的二進位包,譬如我解壓到我的C:\php-sdk檔案夾中,現在的目錄結構如下

複製代碼 代碼如下:

C:\php-sdk
    --bin
    --script
    --share

然後,這個是你已經安裝完成了visual studio 2012,開啟VS2012 Native Tools Command Prompt命令列工具

複製代碼 代碼如下:

#進入目錄
cd C:\php-sdk
#設定環境變數
bin\phpsdk_setvars.bat
#建立常用的php-sdk目錄
bin\phpsdk_buildtree.bat phpdev

如果我們開啟bin\phpsdk_buildtree.bat檔案就會發現它只建立到VC9,沒有VC11,但是我們如果開發php5.5版本,我們需要的是VC11,這時候我們就要把C:\php-sdk\phpdev\vc9複製一份到C:\php-sdk\phpdev\vc11,現在的目錄結構如下:

複製代碼 代碼如下:

C:\php-sdk\phpdev\
                --vc6
                --vc8
                --vc9
                --vc11

因為我下載的deps-5.5-vc11-x86.7z,所以我要解壓deps-5.5-vc11-x86.7z到C:\php-sdk\phpdev\vc11\x86\deps檔案夾下覆蓋,裡邊都是我們需要的庫檔案和一些必要的工具等等。
然後,將我們下載的php-5.5.20.tar.bz2解壓到C:\php-sdk\phpdev\vc11\x86\php-5.5.20檔案夾中。

編譯安裝php

回到VS2012 Native Tools Command Prompt
#進入php來源目錄檔案夾
cd c:\php-sdk\phpdev\vc11\x86\php-5.5.20
buildconf
#查看帶的擴充和編譯命令
configure --help
php-sdk

如果你沒有安裝php,現在這裡就協助到你了,可以先編譯安裝一下php
configure --disable-all --enable-cli
然後,你會看到Type 'nmake' to build PHP,然後編譯
nmake
在C:\php-sdk\phpdev\vc11\x86\php-5.5.20\Release_TS檔案夾下就產生了php.exe檔案,環境變數中加入這個路徑,好在命令列中能使用php命令。

開發PHP的第一個擴充

假如我們要開發一個widuu()函數,實現的效果如下

複製代碼 代碼如下:

function widuu($string){
    return "your first extension {$string} is ok";
}

進入擴充目錄,產生擴充檔案夾

複製代碼 代碼如下:

cd C:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext
#輸入php ext_skel_win32.php --extname=副檔名稱
php ext_skel_win32.php --extname=widuuweb

這時候我們在C:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext就看到了自己的目錄widuuweb,開啟widuuweb\php_widuuweb.h,在
#PHP_MINFO_FUNCTION(widuuweb);下一行寫入自己的函數,譬如我定義的是widuu()函數
PHP_FUNCTION(widuu);
開啟php_widuuweb.c編寫函數,在PHP_FUNCTION(confirm_widuuweb_compiled)下

複製代碼 代碼如下:

PHP_FUNCTION(widuu){
    char *arg_string = NULL;
    int  arg_len,str_len;
    char *string;
    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"s",&arg_string,&arg_len) == FAILURE){
        return;
    }
    str_len = spprintf(&string,0,"your first extension %.78s is ok",arg_string);
    RETURN_STRINGL(string,str_len,0);
}

然後找到PHP_FE(confirm_widuuweb_compiled, NULL),在下邊註冊你的函數

複製代碼 代碼如下:

const zend_function_entry widuuweb_functions[] = {
    PHP_FE(confirm_widuuweb_compiled,   NULL)       /* For testing, remove later. */
    PHP_FE(widuu,NULL)
    PHP_FE_END  /* Must be the last line in widuuweb_functions[] */
};

修改C:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext\widuuweb\config.w32,去掉
// ARG_ENABLE("widuuweb", "enable widuuweb support", "no");
前邊的注釋,vs命令列,輸入cd .. 到php-5.5.20目錄中,輸入下面的命令
buildconf --force
#查看擴充
configure --help
如果,有錯誤,大家可以開啟,目錄下configure.js查看,我這個出現了錯誤,是configure.js的4791行,
ARG_ENABLE("widuuweb", "enable widuuweb support", "no");  */
多了一個*/的注釋,去掉就可以了,然後再輸入
configure --help
就看到了,有一行
 --enable-widuuweb             enable widuuweb support
然後配置
configure --disable-all --enable-cli --enable-widuuweb=shared
php動態擴充

其中--enable-widuuweb=shared動態擴充,正好與靜態擴充相對。
然後輸入nmake,完成後,我們在C:\php-sdk\phpdev\vc11\x86\php-5.5.20\Release_TS目錄下就發現了php_widuuweb.dll檔案,可以放到環境中測試了。
如果你本地沒有安裝php環境,而是跟我一樣只是編譯了php,如果測試,我建議靜態編譯看效果
configure --disable-all --enable-cli --enable-widuuweb=static
nmake
然後,你可以再Release_TS目錄下,輸入
php -r "echo widuu('widuu');"  //輸出"your first extension widuu is ok"
ok,就說到這裡,以後再慢慢來講,有什麼不懂的大家可以留言,基礎的ZEND_API,大家可以去walu.cc查看

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.