详解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 相关文章推荐
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
php实现网站插件机制的方法
Nov 10 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
php实例分享之mysql数据备份
May 19 PHP
PHP+APACHE实现网址伪静态
Feb 22 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 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使用ereg验证文件上传的方法
2014/12/16 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
JS target与currentTarget区别说明
2011/08/28 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
python连接sql server乱码的解决方法
2013/01/28 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Python 如何创建一个线程池
2020/07/28 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
交通安全横幅标语
2014/10/07 职场文书
社区低保工作总结2015
2015/07/23 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL