网上资料找了不少,这里留个随笔汇总一下,自己以后再搭建就不用再找资料了。
WIN8 64位没有问题,应该WIN7的也可以,不做测试了。
一、需求:
1. PHP5.4环境(Apache\nginx\IIS随便,只要能运行PHP.EXE就行)
2. VS2010(要有C++,看了好多写ASPX的程序员可能没装这个,注意下)
二、准备工作:
1. 进入下载页面:
下载deps-5.4-vc9-x86.7z
注:有更新版本就下最新的吧
2. 进入下载页面:
下载PHP源码,我下的是php-5.4.9-src.zip
注:同上,按需下载
3. 进入下载页面:
下载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扩展的话,这个搭建是绝对没问题了。