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 相关文章推荐
第十二节 类的自动加载 [12]
Oct 09 PHP
实用函数2
Nov 08 PHP
PHP批量生成缩略图的代码
Jul 19 PHP
PHP DataGrid 实现代码
Aug 12 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
php延迟静态绑定实例分析
Feb 08 PHP
php类常量用法实例分析
Jul 09 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
php支付宝在线支付接口开发教程
Sep 19 PHP
php获取微信共享收货地址的方法
Dec 21 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
随机头像PHP版
2006/10/09 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
div移动 输入框不能输入的问题
2009/11/19 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
python实现保存网页到本地示例
2014/03/16 Python
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
Python timeit模块的使用实践
2020/01/13 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
ddl,dml和dcl的含义
2016/05/08 面试题
电子邮箱格式怎么写
2014/01/12 职场文书
学校介绍信范文
2014/01/14 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis