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中实现图片的锐化
Oct 09 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
Apache+php+mysql在windows下的安装与配置图解(最新版)
Nov 30 PHP
PHP 在线翻译函数代码
May 07 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
PHP获取当前url的具体方法全面解析
Nov 26 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 PHP
Smarty3配置及入门语法
Feb 22 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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中全局变量global的使用演示代码
2011/05/18 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
javascript时间函数大全
2014/06/30 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
单位创先争优活动方案
2014/01/26 职场文书
简历中的自我评价范文
2014/02/05 职场文书
经济管理专业求职信
2014/06/09 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
计算机实训报告范文
2014/11/05 职场文书
初中作文评语
2014/12/25 职场文书
小学生暑假生活总结
2015/07/13 职场文书
大学生暑期实践报告
2015/07/13 职场文书
小学课改工作总结
2015/08/13 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
DIY胆机必读:各国电子管评价
2022/04/06 无线电
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL