详解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 23 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
PHP 图片水印类代码
Aug 27 PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
php服务器的系统详解
Oct 12 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
May 29 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
ajax php 实现写入数据库
2009/09/02 PHP
基于php-fpm的配置详解
2013/06/03 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
python比较两个列表是否相等的方法
2015/07/28 Python
python 自动去除空行的实例
2018/07/24 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
Python利用命名空间解析XML文档
2020/08/10 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
医学院学生的自我评价分享
2013/11/19 职场文书
食品安全处置方案
2014/06/14 职场文书
校园广播稿精选
2014/10/01 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
门面租赁合同范文
2019/08/06 职场文书
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL