设为首页 收藏本站
查看: 1835|回复: 0

Windows WAMP PHP 扩展开发

[复制链接]

尚未签到

发表于 2015-11-17 10:33:19 | 显示全部楼层 |阅读模式
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版本的编译的相关信息,主要查看:
  Compiler MSVC11 (Visual C++ 2012)
  Architecture x86
  Zend Extension Build API220121212,TS,VC11
  PHP Extension Build API20121212,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目录,文件内容如下:
  <?php
    echo confirm_my_plugin_compiled(&quot;my_plugin&quot;);
  ?>
  使用浏览器访问上面新建的my_plugin_test.php文件,出现如下页面,说明插件运行正常:
  Congratulations! You have successfully modified ext/my_plugin/config.m4. Module my_plugin is now compiled into PHP.

         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140230-1-1.html 上篇帖子: Wamp_x64安装oracle扩展 下篇帖子: bitnami WAMP stack使用方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表