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 生成WML页面方法详解
Aug 09 PHP
pdo中使用参数化查询sql
Aug 11 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
Laravel 5.3 学习笔记之 配置
Aug 28 PHP
Laravel日志用法详解
Oct 09 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
PHP的curl函数的用法总结
Feb 14 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 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之第一天
2006/10/09 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
javascript date格式化示例
2013/09/25 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
Python 去除字符串中指定字符串
2020/03/05 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
阿德的梦教学反思
2014/02/06 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
2014年实验室工作总结
2014/12/03 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL