PHP5.4 + VS2010 WIN8 x64写扩展环境搭建

网上资料找了不少,这里留个随笔汇总一下,自己以后再搭建就不用再找资料了。

WIN8 64位没有问题,应该WIN7的也可以,不做测试了。

一、需求:

1. PHP5.4环境(Apache\nginx\IIS随便,只要能运行PHP.EXE就行)

2. VS2010(要有C++,看了好多写ASPX的程序员可能没装这个,注意下)

二、准备工作:

1. 进入下载页面:http://windows.php.net/downloads/php-sdk/

下载deps-5.4-vc9-x86.7z

注:有更新版本就下最新的吧

2. 进入下载页面:http://php.net/downloads.php

下载PHP源码,我下的是php-5.4.9-src.zip

注:同上,按需下载

3. 进入下载页面:http://sourceforge.net/projects/mingw/files/

下载MinGW,要用到里面的SH,有Cygwin的就不用下载了,没有的话,下载安装也没多久,不知道下哪的话,进页面找到这个点击下载:mingw-get-inst-????????.exe(问号是日期),MinGW安装的时候因为需要,我选了编译器,不知道不选可不可以正常使用,注意下。装一下大概300多M,我20M的光纤,感觉安装时下载用了近10分钟左右,低速的朋友注意下。

三、建工程文件夹

G:\Workspace\phpdev,这是我的当前路径,改成你的工作路径吧。

把deps-5.4-vc9-x86.7z解到G:\Workspace\phpdev里,里面多出三个文件夹:bin、script、share

打开“系统>高级系统设置>环境变量>系统变量>path”,后面加上你的工作路径下的bin文件夹(要用到Bison.exe)、PHP文件夹、还有system32文件夹(要用到CScript.exe),如:

G:\Workspace\phpdev\bin;D:\DEV\ServApp\PHP;c:\windows\system32;

打开CMD命令行(管理员身份),定位至G:\Workspace\phpdev

然后找到你的VS2010文件夹,找到里面的vc\vcvarsall.bat,不可能没有,仔细找找,真不行直接右上角搜索vcvarsall.bat,把全路径复制下来,路径带空格的前后加俩双引号,如:

"D:\Program Files\ForWork\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"

到刚刚打开的CMD中右键粘贴运行上面的BAT。

然后继续,输入:

bin\phpsdk_setvars.bat

bin\phpsdk_buildtree.bat phpsrc

如果报错,上面肯定没设置好。完成后,phpdev里多出一个phpsrc文件夹,把php-5.4.9-src.zip解压到phpsrc\vc9\x86\里面

然后作个调整:

phpsrc\vc9\x86\ext\ext_skel_win32.php,用编辑器打开,把里面的

$cygwin_path = '改成你自己的CYGWIN或是MinGW路径';

我的是这个:

$cygwin_path = 'C:\MinGW\msys\1.0\bin';

保存退出

然后命令行里面输入:

configure

如果有出现cscript、bison不存在,检查你的环境变量system32有没有加上或是杀软给屏了,cl.exe不存在的话,vcvarsall.bat没运行,执行完没问题的话,继续输入

configure --disable-all --enable-cli

这一步产生了一堆信息不用管,因为main\config.w32.h等文件已经生成了,然后打开main\config.w32.h

搜索PHP_COMPILER_ID,把值VC10换成VC9,保存。

把命令行工作路径换到phpsrc\ext,继续执行

php ext_skel_win32.php --extname=testext

黄色部分改成你的EXTENSION名字,打开phpsrc\ext\php_testext,里面DSP看到了吧,打开、转换成VS2010工程,

项目属性里面有以下改动:

项目>属性>

  C/C++>高级>编译为:编译为 C 代码 (/TC)

  链接器>附加库目录,这里面加上你的PHP里面的DEV文件夹,我的是这个D:\DEV\ServApp\PHP\dev

配置管理器里面,设置Release_TS为活动

编译无问题生成的dll在phpsrc\Release_TS里面,这个dll可以复制到你的php环境的ext文件中,同时编辑你的php.ini,加上extension=php_testext.dll

看PHPINFO的时候,应该有testext的一栏了,时间匆忙没写太细了,如果是写PHP扩展的话,这个搭建是绝对没问题了。

 

posted @ 2012-12-06 03:12  Last propose  阅读(876)  评论(0编辑  收藏  举报