详解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基础知识:类与对象(1)
Dec 13 PHP
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
php实现从上传文件创建缩略图的方法
Apr 02 PHP
Yii2使用swiftmailer发送邮件的方法
May 03 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 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关联数组的10个操作技巧
2013/01/21 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
javascript hasFocus使用实例
2010/06/29 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
python中property和setter装饰器用法
2019/12/19 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
opencv实现图像几何变换
2021/03/24 Python
物流仓管员工作职责
2014/01/06 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
农业项目投资意向书
2015/05/09 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
Nginx HTTP跳转至HTTPS
2022/05/15 Servers