msysgit) 提供 bash、make 等工具php-sdk-binary-tools-20110915.zipdeps-5.5-vc11-x86.7zphp-5.5.x.tar.bz2(官網下載)C:\php-sdk,結構含 bin、script、share。cd C:\php-sdk
bin\phpsdk_setvars.bat
bin\phpsdk_buildtree.bat phpdev
copy C:\php-sdk\phpdev\vc9 C:\php-sdk\phpdev\vc11
deps-5.5-vc11-x86.7z 至 C:\php-sdk\phpdev\vc11\x86\deps 覆蓋。C:\php-sdk\phpdev\vc11\x86\php-5.5.x。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 指令。
widuuwebext 目錄產生骨架:cd C:\php-sdk\phpdev\vc11\x86\php-5.5.x\ext
php ext_skel_win32.php --extname=widuuweb
php_widuuweb.h,宣告函式:PHP_FUNCTION(widuu);
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);
}
zend_function_entry:const zend_function_entry widuuweb_functions[] = {
PHP_FE(confirm_widuuweb_compiled, NULL)
PHP_FE(widuu, NULL)
PHP_FE_END
};
config.w32,取消註解 ARG_ENABLE("widuuweb", ...)。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
configure.js 偶有殘留註解符號導致錯誤,需手動修正。--enable-xxx=static 靜態編譯,免去 DLL 載入問題。walu.cc 等社群資源。