详解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判断字符以及字符串的包含方法属性
Aug 30 PHP
PHP XML操作类DOMDocument
Dec 16 PHP
php记录日志的实现代码
Aug 08 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
php获取新浪微博数据API实例
Nov 12 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
laravel框架模型、视图与控制器简单操作示例
Oct 10 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 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 图片文件上传实现代码
2010/12/29 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
JQuery select标签操作代码段
2010/05/16 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
sogou地图API用法实例教程
2014/09/11 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
Python Xml文件添加字节属性的方法
2018/03/31 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
python 字段拆分详解
2019/12/17 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
Python容器类型公共方法总结
2020/08/19 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
中专生的个人自我评价
2013/12/11 职场文书
咖啡店自主创业商业计划书
2014/01/22 职场文书
个性发展自我评价
2014/02/11 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
作风整顿剖析材料
2014/09/30 职场文书
法人身份证明书
2015/06/18 职场文书