详解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通用检测函数集合
Nov 25 PHP
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
解析link_mysql的php版
Jun 30 PHP
php中rename函数用法分析
Nov 15 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
thinkphp实现附件上传功能
May 26 PHP
PHP依赖注入原理与用法分析
Aug 21 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
PHP lcfirst()函数定义与用法
Mar 08 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 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
php中设置多级目录session的问题
2011/08/08 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
python中abs&map&reduce简介
2018/02/20 Python
Numpy中的mask的使用
2018/07/21 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
python实现按行分割文件
2019/07/22 Python
解决Mac下使用python的坑
2019/08/13 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
详解Python 函数参数的拆解
2020/09/02 Python
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
校园文明标语
2014/06/13 职场文书
2014年体育部工作总结
2014/11/13 职场文书
统计工作个人总结
2015/03/03 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书