加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

windows下配置php5.5开发环境及开发扩展

发布时间:2020-12-13 02:18:09 所属栏目:PHP教程 来源:网络整理
导读:《:windows下配置php5.5开发环境及开发扩展》要点: 本文介绍了:windows下配置php5.5开发环境及开发扩展,希望对您有用。如果有疑问,可以联系我们。 网上的教程是比较多的,但是我发现在windows下的扩展开发比较少,而且大多都是php5.3版本以前的,今天我就

《:windows下配置php5.5开发环境及开发扩展》要点:
本文介绍了:windows下配置php5.5开发环境及开发扩展,希望对您有用。如果有疑问,可以联系我们。

网上的教程是比较多的,但是我发现在windows下的扩展开发比较少,而且大多都是php5.3版本以前的,今天我就给大家讲解一下php扩展开发,我就拿php5.5的版本来说明一下的了PHP应用

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
#设置环境变量
binphpsdk_setvars.bat
#创建常用的php-sdk目录
binphpsdk_buildtree.bat phpdev

如果我们打开binphpsdk_buildtree.bat文件就会发现它只创建到VC9,没有VC11,但是我们如果开发php5.5版本,我们需要的是VC11,这时候我们就要把C:php-sdkphpdevvc9复制一份到C:php-sdkphpdevvc11,现在的目录结构如下:

代码如下:

C:php-sdkphpdev
??????????????? --vc6
??????????????? --vc8
??????????????? --vc9
??????????????? --vc11

因为我下载的deps-5.5-vc11-x86.7z,所以我要解压deps-5.5-vc11-x86.7z到C:php-sdkphpdevvc11x86deps文件夹下覆盖,里边都是我们需要的库文件和一些必要的工具等等.
然后,将我们下载的php-5.5.20.tar.bz2解压到C:php-sdkphpdevvc11x86php-5.5.20文件夹中.

编译安装php

回到VS2012 Native Tools Command Prompt
#进入php源目录文件夹
cd c:php-sdkphpdevvc11x86php-5.5.20
buildconf
#查看带的扩展和编译命令
configure --help
php-sdk

如果你没有安装php,现在这里就赞助到你了,可以先编译安装一下php
configure --disable-all --enable-cli
然后,你会看到Type 'nmake' to build PHP,然后编译
nmake
在C:php-sdkphpdevvc11x86php-5.5.20Release_TS文件夹下就生成了php.exe文件,环境变量中加入这个路径,好在命令行中能使用php命令.

开发PHP的第一个扩展

假如我们要开发一个widuu()函数,实现的效果如下

代码如下:

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

进入扩展目录,生成扩展文件夹

代码如下:

cd C:php-sdkphpdevvc11x86php-5.5.20ext
#输入php ext_skel_win32.php --extname=扩展名称
php ext_skel_win32.php --extname=widuuweb

这时候我们在C:php-sdkphpdevvc11x86php-5.5.20ext就看到了自己的目录widuuweb,打开widuuwebphp_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,"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-sdkphpdevvc11x86php-5.5.20extwiduuwebconfig.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","no");? */
多了一个*/的注释,去掉就可以了,然后再输入
configure --help
就看到了,有一行
?--enable-widuuweb???????????? enable widuuweb support
然后配置
configure --disable-all --enable-cli --enable-widuuweb=shared
php动态扩展

其中--enable-widuuweb=shared动态扩展,正好与静态扩展相对.
然后输入nmake,完成后,我们在C:php-sdkphpdevvc11x86php-5.5.20Release_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查看

编程之家培训学院每天发布《:windows下配置php5.5开发环境及开发扩展》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读