首頁 >後端開發 >php教程 >PHP擴充開發-windows開發環境建置詳解

PHP擴充開發-windows開發環境建置詳解

黄舟
黄舟原創
2017-03-22 10:00:222207瀏覽

編譯PHP

1、解壓縮php-sdk到目錄E:\tang\php_stdio\php-sdk
2、設定vs2013編譯器環境變數:開啟cmd窗口,執行vcvarsall.bat(路徑根據vs的安裝路徑決定)
3、建立開發目錄:
    開啟vs2013本機指令提示工具,注意如果編譯64位元的請開啟vs2013 x64指令提示工具,我用的是x64版本。切換到E:\tang\php_stdio\php-sdk目錄下,分別運行:
    bin\phpsdk_setvars.bat
    bin\phpsdk_buildtree.bat php55dev-x64
運行後,在E:\tang\php_stdio\php-sdk目錄下又多了一個php55dev-x64目錄。
4、將deps解壓縮到如下目錄:
   E:tang\php_stdio\php-sdk\php55dev-x64\vc9\x64\
   原來這個目錄下的deps目錄下的所有子目錄都是空目錄,解壓縮後,應該複製進很多必要的模組/擴充所需的函式庫檔案。
5、接下來,PHP-5.5.38原始碼目錄複製一份到以下目錄:
   E:\tang\php_stdio\php-sdk\php55dev-x64\vc9\x64\
6、進入php原始碼目錄
   cd E:\tang\php_stdio\php-sdk\php55dev-x64\vc9\x64\php-5.5.38
   運作
   buildconf
   然後就可以先試著編譯php了。最開始,一般編譯盡可能少的模組,先讓核心能正常編譯出來:
   configure –disable-all –enable-cli
7、編譯PHP,執行
   nmake
   至此,php最核心部分及一個命令列工具就編譯出來了。

開發PHP擴充test_extension

PHP扩展的基础结构相同,为方便开发PHP提供了ext_skel和ext_skel_win32.php分别是linux、windows下的扩展框架搭建工具。
此次讲的是Windows中搭建PHP扩展开发环境,所以使用的是ext_skel_win32.php。用它生成的扩展框架,可以直接用VS打开进行书写代码和编译。其步骤如下:

1、切換到目錄ext下:
cd E:\tang\php_stdio\php-sdk\php55dev-x64\vc9\x64\php-5.5.38\ext
2、在目錄下建立檔案test_extension.def,檔案內容為擴充將要匯出的函數,如下:

int a(int x, int y)string b(string str, int n)

3、執行指令產生擴充框架
   php.exe ext_skel_win32.php –extname=test_extension –proto=test_extension.def
   成功後產生test_extension目錄。
4、進入test_extension目錄下,用vs2013開啟test_extension.dsp工程檔。如果編譯的是64位元擴充注意修改屬性為x64平台。編譯完成後產生php_test_extension.dll
5、將php_test_extension.dll放到PHP的ext目錄下,在php.ini檔加上extension=php_test_extension.dll
6、測試
   運行:php.exe  test_extension.php(其中test_extnesion.php是在產生的擴充框架目錄下)
擴充呼叫成功會出現:

Functions available in the test extension:
confirm_test_extension_compiledab

Congratulations! You have successfully modified ext/test_extension/config.m4. Mo
dule test_extension is now compiled into PHP.

一個簡單的PHP擴充就這樣開發完成,要注意以下幾點:
1、注意檔案位數,32位元或64位元,必須與PHP的版本對應
2、注意擴充必須和PHP使用相同版本的編譯器

以上是PHP擴充開發-windows開發環境建置詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn