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 相关文章推荐
简单的过滤字符串中的HTML标记
Dec 25 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
php对二维数组进行排序的简单实例
Dec 19 PHP
php实现获取及设置用户访问页面语言类
Sep 24 PHP
php中数字、字符与对象判断函数用法实例
Nov 26 PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
PHP中JSON的应用技巧
Oct 10 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
Yii框架应用组件用法实例分析
May 15 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
使用变量动态设置js的属性名
2014/10/19 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
node实现基于token的身份验证
2018/04/09 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
Python与Redis的连接教程
2015/04/22 Python
浅谈Python的list中的选取范围
2018/11/12 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
Python字符串及文本模式方法详解
2020/09/10 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
初中国旗下的演讲稿
2014/08/28 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
门卫管理制度范本
2015/08/05 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android