windows下配置php5.5开发环境搭建及开发扩展2018-05-17 13:59:02

( 还没有投票,继续加油! )
分享:
31.3K

系统环境:

Windows 10

Visual Studio 2013

msysgit  下载地址:http://msysgit.github.io/

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.17  下载地址:http://php.net/downloads.php


1. 解压php-sdk-binary-tools的二进制包,比如C:\php-sdk

2. 配置环境

打开VS2012 Native Tools Command Prompt命令行工具,依次执行:

#进入目录

cd C:\php-sdk

#设置环境变量

bin\phpsdk_setvars.bat

#创建常用的php-sdk目录

bin\phpsdk_buildtree.bat phpdev


如果打开bin\phpsdk_buildtree.bat就会发现它只创建到VC9,没有VC11,但是我们如果开发php5.5版本,我们需要的是VC11,这时候我们就要把C:\php-sdk\phpdev\vc9复制一份到C:\php-sdk\phpdev\vc11。


3. 解压deps-5.6-vc11-x86.7z到C:\php-sdk\phpdev\vc11\x86\deps文件夹下覆盖(原三个目录默认都是空的),里边都是需要的库文件和一些必要的工具等等。


4. 解压php-5.6.17.tar.bz2到C:\php-sdk\phpdev\vc11\x86\php-5.6.17文件夹中。


编译php

=======================

回到VS2012 Native Tools Command Prompt

#进入php源目录文件夹

cd c:\php-sdk\phpdev\vc11\x86\php-5.6.17

#执行

buildconf

#查看带的扩展和编译命令

configure --help


#先编译php

configure --disable-all --enable-cli


如提示c1路径找不到,可增加系统环境变量C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\,如果找不到mspdb100,可到网上下载后放到VC\Bin\下即可。

找不到BISON可把C:\php-sdk\bin加入WINDOWS环境变量,或可从网上下载后放到WINDOWS文件夹下即可。


Recreating build dirs

       "" -h win32\ -r Release_TS\ -x Release_TS\ win32\build\wsyslog.mc

'-h' is not recognized as an internal or external command,

operable program or batch file.

NMAKE : fatal error U1077: '"' : return code '0x1'



然后,你会看到Type 'nmake' to build PHP,然后编译

nmake

在C:\php-sdk\phpdev\vc11\x86\php-5.5.20\Release_TS文件夹下就生成了php.exe文件,环境变量中加入这个路径,好在命令行中能使用php命令。



开发PHP的第一个扩展

======================================

假如我们要开发一个HelloWord()函数,实现的效果如下


function HelloFun($str){

   return "Hello {$str}";

}


进入扩展目录,生成扩展文件夹

cd C:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext


#输入php ext_skel_win32.php --extname=扩展名称

php ext_skel_win32.php --extname=Mysecext


这时候我们在C:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext就看到了自己的目录Mysecext,打开Mysecext\php_Mysecext.h,在#PHP_MINFO_FUNCTION(Mysecext);下一行写入自己的函数,譬如我定义的是HelloFun()函数PHP_FUNCTION(HelloFun);


打开php_Mysecext.c编写函数,在PHP_FUNCTION(confirm_Mysecext_compiled)下

复制代码 代码如下:


PHP_FUNCTION(HelloFun){

   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,"your first extension %.78s is ok",arg_string);

   RETURN_STRINGL(string,str_len,0);

}

然后找到PHP_FE(confirm_Mysecext_compiled, NULL),在下边注册你的函数


const zend_function_entry Mysecext_functions[] = {

   PHP_FE(confirm_Mysecext_compiled,   NULL)       /* For testing, remove later. */

   PHP_FE(widuu,NULL)

   PHP_FE_END  /* Must be the last line in Mysecext_functions[] */

};


修改C:\php-sdk\phpdev\vc11\x86\php-5.5.20\ext\Mysecext\config.w32,去掉

// ARG_ENABLE("Mysecext", "enable Mysecext support", "no");

前边的注释,vs命令行,输入cd .. 到php-5.5.20目录中,输入下面的命令

buildconf --force

#查看扩展

configure --help

如果,有错误,大家可以打开,目录下configure.js查看定位。否则可看到如下信息:


--enable-Mysecext             enable Mysecext support

然后配置

configure --disable-all --enable-cli --enable-Mysecext=shared

php动态扩展

其中--enable-Mysecext=shared动态扩展,正好与静态扩展相对。

然后输入nmake,完成后,我们在C:\php-sdk\phpdev\vc11\x86\php-5.5.20\Release_TS目录下就发现了php_Mysecext.dll文件,可以放到环境中测试了。


如果你本地没有安装php环境,而是跟我一样只是编译了php,如果测试,我建议静态编译看效果

configure --disable-all --enable-cli --enable-Mysecext=static

nmake

然后,你可以再Release_TS目录下,输入

php -r "echo HelloFun('Tom');"

能看到函数中的打印信息出来,说明OK。






头像

snowcoal
  • windows
  • php5

本文标签:

windowsphp5

收藏到我的私密空间

标题:windows下配置php5.5开发环境搭建及开发扩展

作者:花花世界

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限