码迷,mamicode.com
首页 > Web开发 > 详细

php扩展开发

时间:2014-06-03 15:19:23      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:c   a   tar   ext   int   com   

本文的环境是windows下开发php版本5.3

1、下载php5.3的源码包和php5.3的二进制包(平时使用的php程序包)

2、下载cygwin,并默认安装在c:\cygwin,因为生成php扩展框架的程序需要cygwin

3、假设php扩展的工作目录为d:\php,解压源码包和二进制包到这个目录

4、cmd命令行在d:\php\ext目录中运行 php ext_skel_win32.php --extname=yourext  (如果php.exe程序的路劲未加入系统环境变量则需要自己指定路径)

5、如果顺利的话应该在ext目录下生成了yourext的目录了,目录中有个xmltpm.sln的文件,用vs2008(也就是vs9)打开,貌似我用vc6打开编译有很多编译错误,可能因为官网上说明php5.3对应vc2008导致的

6、现在加入自己的第一个函数,在yourext.h中找到PHP_FUNCTION(confirm_yourext_compiled);/* For testing, remove later. */ 这一行,在下面加入PHP_FUNCTION(your_func); 代表声明了your_func的函数

7、在yourext.c中找到PHP_FE(confirm_yourext_compiled,NULL)/* For testing, remove later. */ 下面加上 PHP_FE(your_func,NULL)

8、在yourext.c中找到PHP_FUNCTION(confirm_yourext_compiled) 下面加上

 PHP_FUNCTION(your_func)

{

php_printf("Hello, php ext");

}

这样就完成了一个函数的添加

9、现在开始编译,菜单->生成,应该会提示找不到..\main\config.w32.h,在d:\win32\build\config.w32.h.in 到d:\php\main目录下并改名为config.w32.h

然后需要复制d:\php\dev\php5ts.lib 到d:\php\ext\yourext 目录

顺利的话应该可以编译成功了,至少我编译成功了

10、因为我编译的是非线程安全版本的,所以需要修改工程属性-》配置属性-》c/c++-》预处理器 删除预处理器定义里的ZTS=1,

然后必须在 d:\php\main\config.w32.h  加上一句#define PHP_COMPILER_ID "VC9"

否则会出现下面的错误

PHP Warning: PHP Startup: yourext: Unable to initialize module
Module compiled with build ID=API20090626,NTS
PHP compiled with build ID=API20090626,NTS,VC9
These options need to match
in Unknown on line 0

php扩展开发,布布扣,bubuko.com

php扩展开发

标签:c   a   tar   ext   int   com   

原文地址:http://www.cnblogs.com/zhenzhong/p/3765328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!