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 相关文章推荐
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
php预定义变量使用帮助(带实例)
Oct 30 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
YII实现分页的方法
Jul 09 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
php简单获取复选框值的方法
May 11 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 PHP
php+websocket 实现的聊天室功能详解
May 27 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中文分词 自动获取关键词介绍
2012/11/13 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
零基础php编程好学吗
2019/10/11 PHP
js调用flash的效果代码
2008/04/26 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
javascript 写类方式之十
2009/07/05 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
document.getElementById介绍
2011/09/13 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
JavaScript错误处理
2015/02/03 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
python实现保存网页到本地示例
2014/03/16 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python实现电子书翻页小程序
2019/07/23 Python
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
企业面试题试卷附带答案
2015/12/20 面试题
医院办公室主任职责
2013/12/29 职场文书
装修五一活动策划案
2014/01/23 职场文书
英语老师推荐信
2014/02/26 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
yolov5返回坐标的方法实例
2022/03/17 Python
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android