详解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 相关文章推荐
2.PHP入门
Oct 09 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
ThinkPHP的URL重写问题
Jun 22 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
Jul 31 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
使用PHP开发留言板功能
Nov 19 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 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
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
实例解析php的数据类型
2018/10/24 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
js创建数组的简单方法
2016/07/27 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
Python实现的简单发送邮件脚本分享
2014/11/07 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
《天游峰的扫路人》教学反思
2014/04/25 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python