windows下开发并编译PHP扩展的方法


Posted in PHP onMarch 18, 2011

现在就简单说一在WINDOWS下开发PHP扩展的步骤:
首先需要准备的软件有:
cygwin 安装路径e:\app\cygwin
visual studio C++ 6.0,
修改环境变量,把已经安装好的PHP路径设置为环境变量。在这里,假设我的PHP安装目录是:e:\app\php5.2.5,那么我把WINDOWS环境变量后面加上这个安装目录。方便一会儿使用php.exe。
PHP源代码,这里假设为e:\c_source_code\php-5.2.5

1、修改文件 “PHP源文件目录/ext/ext_skel_win32.php”,在这里就是:E:\c_source_code\php-5.2.5\ext,其中主要是修改其中的cygwin路径。$cygwin_path = 'e:\app\cygwin\bin';
把$cygwin_path修改为你实际安装cygwin的路径。
2、在源代码ext目录也就是e:\c_source_code\php-5.2.5\ext下,执行 php ext_skel_win32.php --extname=<EXT_NAME>,此时会在ext目录下生成<EXT_NAME>目录,这个目录就是我们将要进行PHP扩展开发的框架。比如你运行php.exe ext_skel_win32.php --extname=foo,会在ext目录下生成foo目录。
3、将php-root\dev\php5ts.lib拷贝至 “ext/<EXT_NAME>”中。比如你要开发的PHP扩展名为foo,那么就需要把php-root\dev\php5ts.lib拷贝到PHP源文件目录\ext\foo中。
4、修改foo.c内容,编写我们需要的C代码。
5、进入<EXT_NAME>目录,打开<EXT_NAME>.dsp。
设置VC6工程,
设置菜单“组建”->“移除工程配置”,选中“Win 32 Release_TS”,
设置菜单“工程”,选中“Win 32 Release_TS”
打开Tab“连接”,设置“输出文件名”中的目录,
[可选]打开Tab“C/C++”,增加“预处理器定义”“,COMPILE_DL_<EXT_NAME>”(注意全大写,默认加入的),取消预定义“LIBZEND_EXPORTS”(否则不可引入zend函数)。
6、设置好以后,进行编译,会生成一个dll文件,文件名是<EXT_NAME>.dll,比如在我们的例子中就为foo.dll
把foo.dll拷到e:\app\ext目录下,并在php.ini里加上一行extension=foo.dll,重启一下apache,查看phpinfo();,会发现我们的PHP扩展foo()已经加载进来,已经可以使用这个foo扩展了。

PHP 相关文章推荐
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
php计算两个日期时间差(返回年、月、日)
Jun 19 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
php银联网页支付实现方法
Mar 04 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
PHP实现百度人脸识别
May 06 PHP
在laravel中实现ORM模型使用第二个数据库设置
Oct 24 PHP
WordPress判断用户是否登录的代码
Mar 17 #PHP
用php的ob_start来生成静态页面的方法分析
Mar 09 #PHP
PHP用GD库生成高质量的缩略图片
Mar 09 #PHP
php GeoIP的使用教程
Mar 09 #PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 #PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 #PHP
PHP中uploaded_files函数使用方法详解
Mar 09 #PHP
You might like
PHP中如何调用webservice的实例参考
2013/04/25 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
javascript时区函数介绍
2012/09/14 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
初识Node.js
2014/09/03 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
Node.js事件驱动
2015/06/18 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
使用Python生成url短链接的方法
2015/05/04 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python根据京东商品url获取产品价格
2015/08/09 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python命令行click参数用法解析
2019/12/19 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
升职自荐信
2013/11/28 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
高中军训感言200字
2014/02/23 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
大家访活动实施方案
2014/03/10 职场文书
劲霸男装广告词
2014/03/21 职场文书
低碳生活倡议书
2014/04/14 职场文书
法制宣传日活动总结
2014/04/29 职场文书
反邪教观后感
2015/06/11 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python