windows下配置php5.5開(kāi)發(fā)環(huán)境及開(kāi)發(fā)擴(kuò)展
網(wǎng)上的教程是比較多的,但是我發(fā)現(xiàn)在windows下的擴(kuò)展開(kāi)發(fā)比較少,而且大多都是php5.3版本以前的,今天我就給大家講解一下php擴(kuò)展開(kāi)發(fā),我就拿php5.5的版本來(lái)說(shuō)明一下的了
windows環(huán)境(我個(gè)人的)
windows 8.1 企業(yè)版(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下載,這個(gè)版本不定自己選擇)
第一步
解壓php-sdk-binary-tools的二進(jìn)制包,譬如我解壓到我的C:\php-sdk文件夾中,現(xiàn)在的目錄結(jié)構(gòu)如下
C:\php-sdk
--bin
--script
--share
然后,這個(gè)是你已經(jīng)安裝完成了visual studio 2012,打開(kāi)VS2012 Native Tools Command Prompt命令行工具
#進(jìn)入目錄
cd C:\php-sdk
#設(shè)置環(huán)境變量
bin\phpsdk_setvars.bat
#創(chuàng)建常用的php-sdk目錄
bin\phpsdk_buildtree.bat phpdev
如果我們打開(kāi)bin\phpsdk_buildtree.bat文件就會(huì)發(fā)現(xiàn)它只創(chuàng)建到VC9,沒(méi)有VC11,但是我們?nèi)绻_(kāi)發(fā)php5.5版本,我們需要的是VC11,這時(shí)候我們就要把C:\php-sdk\phpdev\vc9復(fù)制一份到C:\php-sdk\phpdev\vc11,現(xiàn)在的目錄結(jié)構(gòu)如下:
C:\php-sdk\phpdev\
--vc6
--vc8
--vc9
--vc11
因?yàn)槲蚁螺d的deps-5.5-vc11-x86.7z,所以我要解壓deps-5.5-vc11-x86.7z到C:\php-sdk\phpdev\vc11\x86\deps文件夾下覆蓋,里邊都是我們需要的庫(kù)文件和一些必要的工具等等。
然后,將我們下載的php-5.5.20.tar.bz2解壓到C:\php-sdk\phpdev\vc11\x86\php-5.5.20文件夾中。
編譯安裝php
回到VS2012 Native Tools Command Prompt
#進(jìn)入php源目錄文件夾
cd c:\php-sdk\phpdev\vc11\x86\php-5.5.20
buildconf
#查看帶的擴(kuò)展和編譯命令
configure --help
php-sdk
如果你沒(méi)有安裝php,現(xiàn)在這里就幫助到你了,可以先編譯安裝一下php
configure --disable-all --enable-cli
然后,你會(huì)看到Type 'nmake' to build PHP,然后編譯
nmake
在C:\php-sdk\phpdev\vc11\x86\php-5.5.20\Release_TS文件夾下就生成了php.exe文件,環(huán)境變量中加入這個(gè)路徑,好在命令行中能使用php命令。
開(kāi)發(fā)PHP的第一個(gè)擴(kuò)展
假如我們要開(kāi)發(fā)一個(gè)widuu()函數(shù),實(shí)現(xiàn)的效果如下
function widuu($string){
return "your first extension {$string} is ok";
}
進(jìn)入擴(kuò)展目錄,生成擴(kuò)展文件夾
cd C:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext
#輸入php ext_skel_win32.php --extname=擴(kuò)展名稱
php ext_skel_win32.php --extname=widuuweb
這時(shí)候我們?cè)贑:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext就看到了自己的目錄widuuweb,打開(kāi)widuuweb\php_widuuweb.h,在
#PHP_MINFO_FUNCTION(widuuweb);下一行寫(xiě)入自己的函數(shù),譬如我定義的是widuu()函數(shù)
PHP_FUNCTION(widuu);
打開(kāi)php_widuuweb.c編寫(xiě)函數(shù),在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),在下邊注冊(cè)你的函數(shù)
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
#查看擴(kuò)展
configure --help
如果,有錯(cuò)誤,大家可以打開(kāi),目錄下configure.js查看,我這個(gè)出現(xiàn)了錯(cuò)誤,是configure.js的4791行,
ARG_ENABLE("widuuweb", "enable widuuweb support", "no"); */
多了一個(gè)*/的注釋,去掉就可以了,然后再輸入
configure --help
就看到了,有一行
--enable-widuuweb enable widuuweb support
然后配置
configure --disable-all --enable-cli --enable-widuuweb=shared
php動(dòng)態(tài)擴(kuò)展
其中--enable-widuuweb=shared動(dòng)態(tài)擴(kuò)展,正好與靜態(tài)擴(kuò)展相對(duì)。
然后輸入nmake,完成后,我們?cè)贑:\php-sdk\phpdev\vc11\x86\php-5.5.20\Release_TS目錄下就發(fā)現(xiàn)了php_widuuweb.dll文件,可以放到環(huán)境中測(cè)試了。
如果你本地沒(méi)有安裝php環(huán)境,而是跟我一樣只是編譯了php,如果測(cè)試,我建議靜態(tài)編譯看效果
configure --disable-all --enable-cli --enable-widuuweb=static
nmake
然后,你可以再Release_TS目錄下,輸入
php -r "echo widuu('widuu');" //輸出"your first extension widuu is ok"
ok,就說(shuō)到這里,以后再慢慢來(lái)講,有什么不懂的大家可以留言,基礎(chǔ)的ZEND_API,大家可以去walu.cc查看
相關(guān)文章
php實(shí)現(xiàn)圖片上傳并利用ImageMagick生成縮略圖
這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)圖片上傳并利用ImageMagick生成縮略圖的相關(guān)資料,需要的朋友可以參考下2016-03-03
php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程
這篇文章主要介紹了php面向?qū)ο蟪绦蛟O(shè)計(jì),結(jié)合實(shí)例形式分析了PHP面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念、原理以及類的定義、對(duì)象實(shí)例化、構(gòu)造方法等簡(jiǎn)單使用技巧,需要的朋友可以參考下2019-06-06
PHP實(shí)現(xiàn)的獲取文件mimes類型工具類示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的獲取文件mimes類型工具類,結(jié)合實(shí)例形式分析了php針對(duì)文件mimes類型的相關(guān)判斷操作技巧,需要的朋友可以參考下2018-04-04
用PHP將網(wǎng)址字符串轉(zhuǎn)換成超鏈接(網(wǎng)址或email)
該函數(shù)將 URL 和 E-mail 地址字符串轉(zhuǎn)換為可點(diǎn)擊的超級(jí)鏈接。2010-05-05
網(wǎng)站用php實(shí)現(xiàn)paypal整合方法
雖然在中國(guó)paypal不是很流行,但如果把范圍擴(kuò)大到世界的話,那paypal無(wú)疑就是老大了。2010-11-11

