详解Window7 下开发php扩展


Posted in PHP onDecember 31, 2015

一、首先查看phpinfo() 信息

PHP Version 5.4.34
Zend Extension Build API220100525,TS,VC9
PHP Extension Build API20100525,TS,VC9
Thread Safety enable

线程安全,VC9编译,5.4.34版本

二、开发前准备工作

php 5.3-5.4 :Visual C++ 9.0(Visual Studio 2008)
安装Cygwin(下载地址:http://www.cygwin.com/),虚拟linux环境
php编译后的程序和编译前的源码(下载地址:http://windows.php.net/download/)
编译后的程序路径:php-5.4.45-Win32-VC9-x86\
编译前的源码路径:php-5.4.45-src\
下载php sdk文件,http://windows.php.net/downloads/php-sdk/

1、解压php-sdk-binary-tools-20110915.zip里面的文件,将bison.exe所在的bin目录添加的系统path

将php-5.4.45-Win32-VC9-x86\dev\php5ts.lib 复制到php-5.4.45-src\Release_TS\php5ts.lib
新建php-5.4.45-src\main\config.win32.h,内容如下:
#define SIZEOF_LONG 4
#define PHP_COMPILER_ID "VC9"
"VC9"对应VC9

2、找到php源码目录, php-5.4.45-src\ext\ext_skel_win32.php

/*
This script can be used on Win systems
) Make sure you have CygWin installed
) Adjust the $cygwin_path to match your installation
) Change the environment cariable PATHEXT to include .PHP
) run ext_skel --extname=...
the first time you run this script you will be asked to
associate it with a program. chooses the CLI version of php.
*/
$cygwin_path = 'D:\Program Files\cygwin\bin';

这里改成你的cygwin安装目录。

3、运行cmd,进入php源码目录, php-5.4.45-src\ext,运行命令php ext_skel_win32.php --extname=myphpexs

详解Window7 下开发php扩展

记得将php.exe 所在目录加入path,--extname=你的扩展名字,

若成功会再ext目录下生成myphpexs文件夹,内容如下

详解Window7 下开发php扩展

4、用vs2008 打开myphpexs.dsp, 解决方案配置改为Release,执行生成命令

顺利的话将生成php_myphpexs.dll文件,我的将php_myphpexs.dll生成再了php源码根目录的Release_TS文件夹中

5、将php_myphpexs.dll放到你php的扩展目录,再php.ini中加上extension=php_myphpexs.dll

6、新建php脚本文件test.php,内容如下

echo confirm_myphpexs_compiled('test');

7、运行测试文件,出现如下内容说明,成功了

Congratulations! You have successfully modified ext/myphpext/config.m4. Module 23 is now compiled into PHP.

8、confirm_myphpexs_compiled是建立扩展是自带的册数函数,在编辑你自己的扩展内容时,可以删除改函数

PHP 相关文章推荐
PHP 的几个配置文件函数
Dec 21 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
php学习之流程控制实现代码
Jun 09 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
php中文验证码实现方法
Jun 18 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 #PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
Jul 21 #PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 #PHP
php实现微信公众号主动推送消息
Dec 31 #PHP
php创建桌面快捷方式实现方法
Dec 31 #PHP
开启PHP的伪静态模式
Dec 31 #PHP
thinkphp多层MVC用法分析
Dec 30 #PHP
You might like
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
php自动适应范围的分页代码
2008/08/05 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
PHP中Array相关函数简介
2016/07/03 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
Python导出DBF文件到Excel的方法
2015/07/25 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
python文件排序的方法总结
2020/09/13 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
写好求职信第一句话的技巧
2013/10/26 职场文书
元旦晚会主持词
2014/03/24 职场文书
《假如》教学反思
2014/04/17 职场文书
房地产广告策划方案
2014/05/15 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
老乡聚会通知
2015/04/23 职场文书
于丹论语心得观后感
2015/06/15 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript