一个人炫耀什么,说明内心缺少什么 [登录·注册]

吕滔博客

首页 开发 运维 工具 摄影

windows7_64位系统下编译php7.1的redis扩展dll笔记

工具 memory发布于December 12, 2016 标签: Windows, PHP

先将windows7升级到win7sp1,否则会有好多软件不能用的.

系统必备的组件

Visual Studio 2015(社区版就可以,我安装在d:\vs2015)
vc2015
vcruntime140.dll (不知道,反正我在后面编译的时候提示缺这货,装了vc2015也不管用)
修复电脑上的directx 否则会有好多奇怪的错误提示 比如(应用程序无法正常启动0xc000007b)

PHP组件

下载php7.1源码 http://windows.php.net/downloads/releases/
php-7.1.0-src.zip
下载编译的sdk文件及工具包 http://windows.php.net/downloads/php-sdk/
php-sdk-binary-tools-20110915.zip
deps-7.1-vc14-x64.7z
下载最新的redis扩展包 https://github.com/phpredis/phpredis

配置环境

打开cmd窗口,进入d:\vs2015\VC\bin\
执行vcvars32.bat

环境目录在c盘php-sdk目录
将php-sdk-binary-tools-20110915.zip解压到c:\php-sdk

编辑c:\php-sdk\php-sdk-binary-tools\bin\phpsdk_buildtree.bat文件
在GOTO EXIT前加入

MD %_%\vc14\x86\deps\bin
MD %_%\vc14\x86\deps\lib
MD %_%\vc14\x86\deps\include
MD %_%\vc14\x64\deps\bin
MD %_%\vc14\x64\deps\lib
MD %_%\vc14\x64\deps\include

2.png

打开开始菜单--VS2015--x64本机工具命令提示符

cd c:\php-sdk
php-sdk-binary-tools\bin\phpsdk_setvars.bat
php-sdk-binary-tools\bin\phpsdk_buildtree.bat phpdev

然后脚本将会在c:\php-sdk目录下创建一个目录phpdev
将PHP源码包以及SDK的deps包,分别解压后放到c:\php-sdk\phpdev\vc14\x64下。

其他版本同理。放置后目录结构应该类似
"c:\php-sdk\phpdev\vc14\x64\deps\bin"和"c:\php-sdk\phpdev\vc14\x64\php_src\buildconf"
将redis的扩展包源代码解压后放到"c:\php-sdk\phpdev\vc14\x64\php_src\ext"目录下。可以看到该目录有其他一些自带的扩展包源码。并修改文件夹名为redis

编译。在命令行中输入命令:

set path=%path%;c:\php-sdk\php-sdk-binary-tools\bin

不设置这个path就会出现下面的这种情况
2.0.png

cd c:\php-sdk\phpdev\vc14\x64\php_src
buildconf
configure --disable-all --enable-cli --enable-hash --enable-session --enable-redis=shared --enable-redis-session --enable-redis-igbinary
nmake php-redis.dll

2.1.png

编译完成后在c:\php-sdk\phpdev\vc14\x64\php_src\ReleaseXX下找到你的php_redis.dll,放入你的php的ext目录下,修改php.ini加载即可...

extension=php_redis.dll

3.png
最后经过折腾,成功了,可是加载的运行的时候找不到redis,查看启动日志,提示这不是有效的32位程序,算了,不折腾了

相关推荐

添加新评论

全部评论:已有 7 条评论

Kngstr

Kngstr2017-04-17 09:59:10 回复

这个很简单,你用的PHP不是64位的,64位的dll只能在64位的EXE中使用,同理32的也一样

memory

memory2017-04-17 13:17:25 回复

php64位? 这个我还真没有注意。。。回头再试试

kavid

kavid2017-01-05 23:05:40 回复

楼主能把dll分享出来吗??正好我用的php 7.1

php官方的7.0是似乎不能运行的

kavid

kavid2017-01-09 19:16:46 回复

楼主发到我的邮箱呗 kavid@sina.com

memory

memory2017-01-10 10:29:54

实在是抱歉,我昨天找了一下我WIN电脑上的编译,发现当时编译完测试不成功之后 ,我就删除了环境,然后用了一个一键安装包。。。。

memory

memory2017-01-06 23:45:51 回复

在单位WINPC上,周一吧,我努力记着想死这事儿,到时候打包了发上来!

codes

codes2016-12-28 08:35:31 回复

把 .dll 发出来让我试试啊

网站状态

  • 栏目分类:35个
  • 发布文章:1109篇
  • 用户评论:620条

最新回复

  • 香港服务器: 很详细,学习了
  • memory: 对,这个密钥最好是自己换一下。当然不嫌麻烦甚至可以考虑将密钥做到...
  • 小明明: 在加密的时候 秘钥固定不就可以机密了吗
  • 上海代理记账: 看起来代码有一些复杂的呀。。。
  • 香港云服务器: 站长不错,不错的干货
  • yet handsome: 我看了你的这个发现历史真的是惊人的相似,我们已经做到redis集...
  • memory: 好久不玩它们了,我的相关知识来自谷歌...
  • 于小鱼: 你好,想请教一些关于xen和kvm的问题。
  • memory: 如果将图片 base64_encode 后,再想取回以前的路径不...
  • 陈凌风: 我要区正常的路径显示怎么办?
  • genuiner: 牛逼
  • haitongz: 赞
  • memory: php64位? 这个我还真没有注意。。。回头再试试
  • Kngstr: 这个很简单,你用的PHP不是64位的,64位的dll只能在64位...
  • memory: 使用的是typecho.
  • GavinHsueh: 您好,我了解下您的博客是自己开发的么?看着很不错
  • 个人博客: 看看先
  • memory: 谢谢,已修正。
  • jrotty: 方法一中next后面少个'符号
  • daxia: mark