在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
网上的教程是比较多的,但是基于php7+windows的教程非常之少,通过几天的摸索及参考很多资料,终于发现如下可以运行。
php7要求使用vc2015,同时安装sdk,我使用的是8.1的windows sdk 8.1,我用的是win10 10586,也可以装10586的
第一步
然后,这个是你已经安装完成了visual studio 2015,打开VS2015开人员命令提示,注意,编译是一定要用这个进,普通的cmd不行,走了很多弯路。。。
#进入目录
cd D:\vcmyprojects\php-sdk #设置环境变量 bin\phpsdk_setvars.bat #创建常用的php-sdk目录 bin\phpsdk_buildtree.bat phpdev
如果我们打开bin\phpsdk_buildtree.bat文件就会发现它只创建到VC9,没有VC14,但是我们如果开发php7版本,我们需要的是VC14,这时候我们就要把D:\vcmyprojects\php-sdk\phpdev\vc9复制一份到D:\vcmyprojects\php-sdk\phpdev\vc14,现在的目录结构如下: D:\vcmyprojects\php-sdk\phpdev\ --vc6 --vc8 --vc9 --vc14
因为我下载的deps-7.0-vc14-x86.7z,所以我要解压deps-7.0-vc14-x86.7z到D:\vcmyprojects\php-sdk\phpdev\vc14\x86\deps文件夹下覆盖,里边都是我们需要的库文件和一些必要的工具等等。 很重要的 安装cygwin,我用的是最新的x86版本的,下载安装到c:\cygwin,这样子不需要修改ext_skel_win32.php 编译安装php 回到VS2015开发人员命令提示 如果你没有安装php,现在这里就帮助到你了,可以先编译安装一下php 开发PHP的第一个扩展 进入扩展目录,生成扩展文件夹 cd D:\vcmyprojects\php-sdk\phpdev\vc11\x86\php-7.0.2\ext php ext_skel_win32.php --extname=raintest1 这时候我们在D:\vcmyprojects\php-sdk\phpdev\vc11\x86\php-7.0.2\ext就看到了自己的目录raintest1,打开raintest1\php_raintest1.h,在 #ifdef ZTS
#include "TSRM.h" #endif 下一行写入自己的函数,譬如我定义的是test1()函数
PHP_FUNCTION(test1); 打开php_raintest1.c编写函数,在PHP_FUNCTION(confirm_widuuweb_compiled)下 //新增函数的实现 PHP_FUNCTION(test1) { char *arg = NULL; size_t arg_len, len; zend_string *strg; if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &arg, &arg_len) == FAILURE) {
return; } strg = strpprintf(0, "My First ext!.", "raintest1", arg);
RETURN_STR(strg);
}
然后找到PHP_FE(confirm_widuuweb_compiled, NULL),在下边注册你的函数
修改D:\vcmyprojects\php-sdk\phpdev\vc11\x86\php-7.0.2\ext\raintest1\config.w32,去掉//,下面那行中间那个参数去掉,改为null,不然会死活报警,说是一个变量未定义 if (PHP_RAINTEST1 != "no") { 其中--enable-raintest1=shared动态扩展,正好与静态扩展相对。 |
2022-08-15
2022-08-17
2022-11-06
2022-08-17
2022-07-18
请发表评论