首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Windows 下建置 PHP 5.5 開發環境與撰寫擴充模組完整教學

     編輯:PHP 相關知識

環境準備

  • 作業系統:Windows 8.1+(或 10/11)
  • 編譯工具:Visual Studio 2012 (VC11) 或更新版本
  • Git for Windows (msysgit) 提供 bash、make 等工具
  • PHP SDK Binary Tools:php-sdk-binary-tools-20110915.zip
  • 相依庫:deps-5.5-vc11-x86.7z
  • PHP 原始碼:php-5.5.x.tar.bz2(官網下載)

建置步驟

  1. 解壓 PHP SDK 至 C:\php-sdk,結構含 bin、script、share。
  2. 開啟 VS2012 Native Tools Command Prompt(含正確環境變數)。
  3. 執行初始化:
cd C:\php-sdk
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat phpdev
  1. SDK 預設只建立 vc6~vc9 目錄,PHP 5.5 需 VC11,手動複製:
copy C:\php-sdk\phpdev\vc9 C:\php-sdk\phpdev\vc11
  1. 解壓 deps-5.5-vc11-x86.7z 至 C:\php-sdk\phpdev\vc11\x86\deps 覆蓋。
  2. 解壓 PHP 原始碼至 C:\php-sdk\phpdev\vc11\x86\php-5.5.x。

編譯 PHP 核心

cd C:\php-sdk\phpdev\vc11\x86\php-5.5.x
buildconf
configure --help
# 僅編譯 CLI 版本(無擴充)
configure --disable-all --enable-cli
nmake

編譯成功後,Release_TS\php.exe 即為可執行檔,加入系統 PATH 可直接使用 php 指令。

開發第一個擴充模組:widuuweb

  1. 進入 ext 目錄產生骨架:
cd C:\php-sdk\phpdev\vc11\x86\php-5.5.x\ext
php ext_skel_win32.php --extname=widuuweb
  1. 修改 php_widuuweb.h,宣告函式:
PHP_FUNCTION(widuu);
  1. 修改 widuuweb.c 實作函式:
PHP_FUNCTION(widuu) {
    char *arg = NULL;
    size_t arg_len;
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) return;
    char *ret;
    int ret_len = spprintf(&ret, 0, "your first extension %.78s is ok", arg);
    RETURN_STRINGL(ret, ret_len, 0);
}
  1. 註冊函式於 zend_function_entry:
const zend_function_entry widuuweb_functions[] = {
    PHP_FE(confirm_widuuweb_compiled, NULL)
    PHP_FE(widuu, NULL)
    PHP_FE_END
};
  1. 修改 config.w32,取消註解 ARG_ENABLE("widuuweb", ...)。
  2. 回到 PHP 根目錄重新產生配置並編譯:
cd ..
buildconf --force
configure --disable-all --enable-cli --enable-widuuweb=shared
nmake

編譯完成後,Release_TS\php_widuuweb.dll 即為動態擴充模組,放入 ext 目錄並在 php.ini 載入即可使用。

測試驗證

php -r "echo widuu('widuu');"
// 輸出:your first extension widuu is ok

注意事項

  • VC 版本必須與 PHP 版本對應(5.5 對應 VC11)。
  • configure.js 偶有殘留註解符號導致錯誤,需手動修正。
  • 開發階段可用 --enable-xxx=static 靜態編譯,免去 DLL 載入問題。
  • ZEND API 細節請參考官方文件或 walu.cc 等社群資源。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved