windows 7 64位 开发 php5.6.28扩展
来源:互联网 发布:java计算到今天多少天 编辑:程序博客网 时间:2024/06/08 12:28
开发php扩展对于一个phper来说还是很令人兴奋的。终于我用了一天多的时间在网上各种查找资料,让我编译出了自己的php扩展,下面的教程也是对网上一些教程的修改以及自己碰到的一下问题
先介绍一下开发环境:
windows 7 64位系统
已安装了 xampp【v3.2.2版本】(php开发的集成环境) 使用的php版本是 php 5.6.28 (我就想开发一个扩展直接在我的环境中使用,所以下面的开发过程会按照php5.6.28的版本来进行,至于不同的版本开发php所使用的编译环境是不一样的,这些可以自己再网上查到)
准备工作:
visual studio 2012 安装 下载地址链接:http://pan.baidu.com/s/1nvmfYpN 密码:vf00 ;
cgywin 的安装见 《如何在windows系统下安装swoole》
php-sdk-binary-tools-20110915.zip (http://windows.php.net/downloads/php-sdk/)
deps-5.6-vc11-x86.7z (http://windows.php.net/downloads/php-sdk/)
php-5.6.28.tar.gz (http://php.net/downloads.php)
将以上的所有需要的东西准备齐全,我们就开始开发php 5.6.28 的扩展啦!
1. 现在 D盘创建一个目录作为我们的工作空间 我的事 D:\php-sdk
2. 解压php-sdk-binary-tools的二进制包,D:\php-sdk文件夹中,现在的目录结构如下:
3.安装好vs2012会得到如下工具:
4.使用 x86 命令提示工具执行如下命令(注意:这里我犯过一个错误,我电脑是64位系统所以就想当然的使用了 x64工具命令提示,当把编译查来的dll文件引入xampp集成环境中的php扩展中后,提示我不是有效的win32有效程序,然后我就使用的x86的当然deps也要相应的换成x86的,再重新编译一次就可以啦!!)
#进入目录cd D:\php-sdk#设置环境变量bin\phpsdk_setvars.bat#创建常用的php-sdk目录bin\phpsdk_buildtree.bat phpdev
这时会产生一个 phpdev文件夹,下面有三个文件夹(vc6/vc8/vc9)但是我们编辑php5.6扩展需要vc11,所有我们复制vc9并命名为vc11,并且将 php-sdk-binary-tools-20110915.zip 和 php-5.6.28.tar.gz 解压到该目录的x86目录下面,此时目录应为:
编译安装php
执行以下命令
#进入php源目录文件夹cd d:\php-sdk\phpdev\vc11\x86\php-5.6.28buildconf#查看带的扩展和编译命令configure --help#编译configure --disable-all --enable-cli
之后你应该看到如下画面:
执行nmake然后一直等待就好啦!这个过程中会报出warning错误,我们可以不管它,执行完之后我们会发现在
d:\php-sdk\phpdev\vc11\x86\php-5.6.28\Release_TS
文件夹下面发现 php.exe文件,这是php编译完成,可以将编译好的php.exe路径加入到系统变量中我们继续
开发php扩展
先打开 D:\php-sdk\phpdev\vc11\x86\php-5.6.28\ext\ext_skel_win32.php修改
//我的cygwin安装到了d盘,根据实际情况定$cygwin_path = 'd:\cygwin\bin';然后执行命令
cd D:\php-sdk\phpdev\vc11\x86\php-5.6.28\ext#输入php ext_skel_win32.php --extname=扩展名称php ext_skel_win32.php --extname=widuuweb
这时会在ext文件夹下面多出一个 widuuweb 文件夹
打开 widuuweb 文件夹
修改文件 php_widuuweb.h 添加代码如下
PHP_FUNCTION(widuu);
PHP_FUNCTION(widuu){ char *arg_string = NULL; int arg_len,str_len; char *string; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"s",&arg_string,&arg_len) == FAILURE){ return; } str_len = spprintf(&string,0,"the url is %.78s",arg_string); RETURN_STRINGL(string,str_len,0);}修改 widuuweb.c
const zend_function_entry widuuweb_functions[] = { PHP_FE(confirm_widuuweb_compiled, NULL) /* For testing, remove later. */ PHP_FE(widuu,NULL) PHP_FE_END /* Must be the last line in widuuweb_functions[] */};修改 config.w32
ARG_ENABLE("widuuweb", "enable widuuweb support", "no");进入到php-5.6.28文件夹下,依次执行
buildconf --force#查看扩展configure --help如果报错的话打开该目录下的 configure.js 文件找到报错的行数 去掉多余的 “ */ ” 就可以啦!
继续依次执行以下命令
configure --disable-all --enable-cli --enable-widuuweb=shared #不执行make clean 当将dll文件加载后会报错nmake clean
#依次执行
nmake
然后再 刚才的 Release_TS 会看到生成的 dll 文件
然后将我们的dll文件放到php的扩展文件夹 ext 下面 并修改 php.ini 文件 添加
extension=php_widuuweb.dll然后重启服务器
我们写一个php文件来测试一下
<?phpecho widuu("www.ithome.ren");结果顺利执行输出
the url is www.ithome.ren
- windows 7 64位 开发 php5.6.28扩展
- windows 64位PHP5.5配置xhprof
- c++开发php5 扩展
- windows 64位php5.6和apache2.4安装配置
- windows php5.5 安装redis+phpredis扩展
- windows下 PHP5.5.6 + Imagick扩展
- redis及php扩展配置(windows+php5)
- windows下php5.5.12安装Memcache扩展
- Windows 64位开发问题
- mod_wsgi windows 64位系统安装(python扩展包)
- windows下配置64位的Apache2.4.7+PHP5.5.6+Mysql5.6+PhpMyAdmin环境
- windows-64位环境下搭建PHP5.5+Apache2.4+Mysql5.6+PhpMyAdmin
- Windows 64位系统安装Apache2.4+PHP5.5+MySQL5.6
- Windows 7 安装64位 Python 2.7.3 开发环境
- Windows 7 安装64位 Python 2.7.3 开发环境
- Windows 7(64位) 配置Eclipse+Hadoop2.5.1开发环境
- Windows 7(64位)搭建Python开发环境
- Windows 7 安装64位 Python 2.7.3 开发环境
- 简单获取一系列APP的冷启动时间
- Oracle数据库知识梳理---续(多表查询)
- 拆分和编辑PDF文件我们需要如何去进行操作
- process finished with exit code 52
- Lock的使用
- windows 7 64位 开发 php5.6.28扩展
- Solr1---什么是Solr以及安装配置
- 【南阳理工】36 最长公共子序列
- linux的ls命令详解(四)(几种常用的ls选项排序命令)
- 响应式导航栏-利用纯css实现
- APP安全性测试
- QT中QSettings类的对象创建方式
- vue.js 2.0的一些变化(二、其他改变)
- HDU 6000 贪心