window下开发php简单扩展

来源:互联网 发布:python关键字是什么 编辑:程序博客网 时间:2024/06/05 15:28
1、首先从www.php.net网站上下载php源码,此处以php-5.2.17版本为例,下载后解压至目录。
2、下载安装VC++ 6.0,因为PHP源码是利用6.0版本写的,所以使用这个版本编译不会出现意外,别的版本未测试。
3、把VC++ 6.0安装目录中的 Microsoft Visual Studio\Common\MSDev98\Bin 绝对路径添加到系统环境变量中。
4、进xxx\php-5.2.17\ext目录,复制skeleton文件夹,并重命名为要开发扩展的名字,本例为“zyj”。
5、重命名skeleton.c为zyj.c,skeleton.dsp为zyj.dsp
6、编辑zyj目录中的php_skeleton.h、zyj.c、zyj.dsp这三个文件,替换内容中所有extname为zyj,EXTNAME为ZYJ。(一定要严格区分大小写)

下面就进入到编码阶段:

7、打开php_skeleton.h文件(头文件),找到PHP_FUNCTION(confirm_zyj_compiled);,在 PHP_FUNCTION(confirm_zyj_compiled);,下面编写PHP_FUNCTION(hello_zyj);,声 明一个mb_MessageBox函数,此函数的作用仅是输出js弹出一个alert消息框,用于测试。
8、下面定义函数入口,打开zyj.c文件,找到PHP_FE(confirm_zyj_compiled,NULL) ;,在下面编写 PHP_FE(hello_zyj,NULL),此处注意一下,PHP_FE是定义的一个宏,所以后面不用加引号。

9、在zyj.c最后面编写函数的实体部分:

PHP_FUNCTION(hello_zyj){    char *arg = NULL;    int arg_len, len;    char *strg;    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {        return;    }    len = spprintf(&strg, 0, "<script>alert('%s')</script>",arg); //此处正是输入的js代码    RETURN_STRINGL(strg, len, 0);}


到这代码书写就完成了,下面开始编译:

10、开始->运行,输入CMD,打开命令行窗口。

11、进入zyj的目录,输入 msdev zyj.dsp /MAKE "zyj - Win32 Release_TS",回车编译


12、如果没有错误,在xxx:\php-5.2.17下会生成一个Release_TS文件夹,在里面就可以找到php_zyj.dll文件。

至此扩展dll开发完成,下面在php中进行测试:

13、把php_zyj.dll复制到原php目录中的ext文件夹内。
14、打开php.ini文件,添加当前dll的扩展 extension=php_zyj.dll






附上:php_zyj.dll下载

0 0