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 STRING 陷阱原理说明
Jul 24 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
纯PHP代码实现支付宝批量付款
Dec 24 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
PHP+JQUERY操作JSON实例
Mar 23 PHP
php中Redis的应用--消息传递
Mar 28 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 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
Laravel 验证码认证学习记录小结
2019/12/20 PHP
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
layui文件上传实现代码
2017/05/20 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
深入理解Python3 内置函数大全
2017/11/23 Python
python中对数据进行各种排序的方法
2019/07/02 Python
python logging模块的使用总结
2019/07/09 Python
python isinstance函数用法详解
2020/02/13 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
宿舍打麻将检讨书
2014/01/24 职场文书
车辆工程专业求职信
2014/06/14 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
聘任书范文大全
2015/09/21 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
党章学习心得体会2016
2016/01/14 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
python之django路由和视图案例教程
2021/07/26 Python
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers