比别人多一点志气,你就会多一份出息 [登录·注册]

吕滔博客

首页 开发 运维 工具 摄影

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 条评论

  1. Kngstr

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

    1. memory

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

  2. kavid

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

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

    1. kavid

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

      1. memory

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

    2. memory

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

  3. codes

    把 .dll 发出来让我试试啊

网站状态

  • 栏目分类:49个
  • 发布文章:1512篇
  • 用户评论:729条
  • 开博至今:4070天

正则速查

[abc] 匹配中括号中的单个字符,如a或b或c
[^abc] 匹配除了a、b、c等字符的其他单个字符
[a-z] 匹配一个字符范围,如a到z
[a-zA-Z] 匹配一个字符范围,如a-z 或 A-Z
^ 匹配行的开始
$ 匹配行的结束
\A 匹配一个字符串的开始
\z 匹配一个字符串的结束
. 匹配任意单个字符
\s 匹配空白字符,如空格,TAB
\S 匹配非空白字符
\d 匹配一个数字
\D 匹配非数字
\w 匹配一个字母
\W 匹配非字母
\b 匹配字符边界
(...) 引用所有括号中的内容
(a|b) a或者b
a? 零个或1个a
a* 零个或多个a
a+ 1个或多个a
a{3} 3次重复的a
a{3,} 3次或3次以上重复的a
a{3,6} 3到6次重复的a

修正符

/g 查找所有可能的匹配
/i 不区分大小写
/m 多行匹配
/s 单行匹配
/x 忽略空白模式
/e 可执行模式,PHP专有
/A 强制从目标字符串开头匹配
/D 使用$限制结尾字符,则不允许结尾有换行
/U 只匹配最近的一个字符串;不重复匹配

最新回复

  • 夏目贵志: 我终于懂了是什么意思了!!!
  • 柳溪: 支持博主 很详细!
  • memory: 谢谢。以前没用到checkEmail,是注释掉的,所以这儿我也没...
  • 一个默默无闻的码农: function checkEmail的if里的变量写错了
  • memory: 谢谢大神鼓励。哈哈 有没想到的地方还望多多指正
  • 梦康: 感谢分享,前几天我刚接触这个命令,之前都没用到过。总结非常全面。
  • 梁兴健: Parse error: syntax error, unexp...
  • 耐火砖: 感谢博主分享,很有用
  • memory: 额。。。
  • 亚克力浴缸: 还好我不是学这些的,不然打错那个都不知道
  • memory: 哈哈。写的太2了,将就着吧。我自己看也晕了...
  • 亚克力浴缸: 看晕了,头大
  • 泽泽: 至少手机上图根本没动
  • memory: 呵呵,难道你现在看到的不是gif图?
  • 泽泽: 原文是gif图,无脑抓取也要读一读吧
  • 亚克力浴缸: 学习了 in 参数
  • asd: 感谢博主,功能已实现