1.开发准备
安装wamp,使用的版本为wampserver version 2.5,其中php的版本为5.5.12。
wamp安装目录:d:\wamp
apache目录:d:\wamp\bin\apache
php目录:d:\wamp\bin\php
下载php-5.5.12源码包,解压到任意目录。例如:e:\php-5.5.12
2.通过phpinfo()查询php版本的编译的相关信息,主要查看:
compilermsvc11 (visual c++ 2012)
architecturex86
zend extension buildapi220121212,ts,vc11
php extension buildapi20121212,ts,vc11
从以上的信息可以看出wampserver 2.5中的php是通过msvc11(vs2012)在x86(win32)进行编译且设置了ts(thread safe)属性。
所以在编译扩展插件时也需要使用相同的编译环境及ts设置(默认值为ts)
3.生成编译插件时需要的config.w32.h文件
打开“vs2012 开发人员命令提示”并进入e:\php-5.5.12目录;
执行buildconf.bat命令,该命令在当前目录下生成configure.js文件;
执行configure命令,生成e:\php-5.5.12\main\config.w32.h文件。
如果执行过程中出现bison相关的错误,说明你没有安装bison,可以打开configure.js文件并注释如下三行,再重新执行configure命令。
if (!path_prog('bison')) {
error('bison is required')
}
为什么可以这么操作,因为我们不需要编译php,只需要生成config.w32.h文件,以编译扩展插件。
4.插件编译文件准备
进入e:\php-5.5.12\ext目录,复制e:\php-5.5.12\ext\skeleton目录并重命名为你所需要开发插件的名字,如my_plugin;
将php_skeleton.h,skeleton.c和skeleton.dsp重命名为php_my_plugin.h,my_plugin.c和my_plugin.dsp;
分别打开上面的三个文件,将文件中的extname替换为my_plugin,extname替换为my_plugin(保证大小写一致);
将d:\wamp\bin\php\php5.5.12\dev\php5ts.lib复制到my_plugin目录。
5.编译插件及安装
使用vs2012打开my_plugin.dsp文件,选择release_ts(生成release版本)并配置编译为c代码(解决方案属性-配置属性-c/c++-高级-编译为-编译为 c 代码 (/tc));
编译解决方案并生成插件所对应的php_my_plugin.dll文件(位于e:\php-5.5.12\release_ts目录);
将编译生成的dll文件复制到wamp php扩展目录(d:\wamp\bin\php\php5.5.12\ext);
编辑d:\wamp\bin\apache\apache2.4.9\bin\php.ini文件,查找"extension="关键字并在php原有插件的后面添加"extension=php_my_plugin.dll";
特别注意:所编辑的php.ini不是d:\wamp\bin\php\php5.5.12\php.ini,因为wamp初始化php时,读取位置在d:\wamp\bin\apache\apache2.4.9\bin\php.ini文件。
重启apache服务器。
6.测试插件
如果插件加载成功,重启apache服务器访问phpinfo()即可看到新添加的my_plugin插件。
生成my_plugin_test.php文件,放置到d:\wamp\www目录,文件内容如下:
echo confirm_my_plugin_compiled("my_plugin");
?>
使用浏览器访问上面新建的my_plugin_test.php文件,出现如下页面,说明插件运行正常:
congratulations! you have successfully modified ext/my_plugin/config.m4. module my_plugin is now compiled into php.
版权声明:本文为博主原创文章,未经博主允许不得转载。
yershop开源网店系统是一款基于tp5.1优化版的商城系统,具有建站便捷、扩展丰富、二次开发灵活,以及支持云服务的特点,适合企业及个人快速构建个性化网上商店.系统分为开源版和商业版
以上就介绍了Windows WAMP PHP 扩展开发,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。










