详解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 db类库进行数据库操作
Mar 19 PHP
PHP数组内存耗用太多问题的解决方法
Apr 05 PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 PHP
Smarty模板学习笔记之Smarty简介
May 20 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 PHP
PHP生成数组再传给js的方法
Aug 07 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 PHP
php修改word的实例方法
Nov 17 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开发大型项目的一点经验
2006/10/09 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
js对象的比较
2011/02/26 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
Python中字符串的处理技巧分享
2016/09/17 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
python求绝对值的三种方法小结
2019/12/04 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
计算机网络专业个人的自我评价
2013/10/17 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
水电工岗位职责
2014/02/12 职场文书
政协调研汇报材料
2014/08/15 职场文书
文明好少年事迹材料
2014/08/19 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js