详解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访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
php中动态修改ini配置
Oct 14 PHP
php检测图片主要颜色的方法
Jul 01 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
Sep 22 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
PHP身份证校验码计算方法
Aug 10 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 PHP
PHP INT类型在内存中占字节详解
Jul 20 PHP
laravel Model 执行事务的实现
Oct 10 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Django框架封装外部函数示例
2019/05/28 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
如何将整数int转换成字串String
2014/03/21 面试题
传媒专业推荐信范文
2013/11/23 职场文书
外语系毕业生找工作的求职信
2013/11/28 职场文书
心理健康教育心得体会
2013/12/29 职场文书
关于毕业的广播稿
2014/01/10 职场文书
家长对孩子的评语
2014/04/18 职场文书
小学班级管理心得体会
2016/01/07 职场文书
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫