首页 > 代码库 > php扩展开发
php扩展开发
本文的环境是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