详解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 Squid中可缓存的动态网页设计
Sep 17 PHP
php 定义404页面的实现代码
Nov 19 PHP
Apache服务器无法使用的解决方法
May 08 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
php获取url参数方法总结
Nov 13 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP中PCRE正则解析代码详解
Apr 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
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
PHP URL路由类实例
2013/11/12 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
2011/03/25 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
捕获未处理的Promise错误方法
2017/10/13 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python中List.count()方法的使用教程
2015/05/20 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
python实现文字版扫雷
2020/04/24 Python
中专自荐信
2013/10/13 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
中青班党性分析材料
2014/02/16 职场文书
会计岗位描述
2014/02/22 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
frg-100简单操作(设置)说明
2022/04/05 无线电