随着今年无数网红的出现,各种小视频直播平台如雨后春笋搬出现,像抖音,快手等,市场简直火爆的,大江南北男女老少都在玩,作者都想转行去当个主播火一把,然鹅,不能靠脸吃饭,所以还得日夜加班踏踏实实写代码分享给大家。这不,近期就接到一个客户的直播+小视频项目。该项目用php开发的,项目中有一处new Redis() 代码,每次执行到这里都会抛出这个异常Class 'Redis' not found,但是本地安装的redis服务测试都是好着的,这个问题让作者费了不少心思,深入探究,反复验证,终于把这个问题解决了,想必也有其他开发者朋友遇到过这个问题,今天作者就把解决过程整理一下分享出来。
本案例先决条件:为php7.2搭建redis扩展的前提是在本机上已经成功搭建好php的运行环境,笔者的电脑安装的php的软件是xampp,(其他的软件Wamp也类似)集成环境是apache2.4+mysql5.1+php7.2,操作系统为Win10 系统64位。
一、下载安装Redis
1、下载Redis-x64-3.2.100.msi,然后双击软件安装到想要安装的盘符下,我这里是安装目录是D:\Program Files\Redis
2、安装目录找到redis.windows.conf文件,然后设置密码
3、开启redis服务
在命令行窗口切换到redis的安装目录,在窗口中输入命令redis-server redis.windows.conf 回车出现下面界面则reids服务安装成功且成功启动:
二、安装php的redis扩展
1、查看扩展版本
使用phpinfo()函数查看PHP的版本信息和php软件位数(32位还是64位软件)和编译环境。这会决定redis扩展文件版本。
版本一定要对应看是TS还是nts,是VC11还是VC12还是其他版本号,不一致的版本驱动文件不会生效,代码中一直会抛异常Class 'Redis' not found,笔者最开始也是经历了这个坑。看清楚我的php是32位的(备注:64位操作系统安装的32位的php),编译环境是MSVC15(VisualC++2017) ,扩展版本是TS,VC15
-
TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。
-
NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。
TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。
NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。
2、下载驱动文件igbinary和redis
igbinary下载地址 https://windows.php.net/downloads/pecl/releases/igbinary/
redis 下载地址 https://windows.php.net/downloads/pecl/releases/redis/3.1.4/
根据php的版本信息下载对应的redis驱动文件,我的php版本是7.2的,php扩展版本是TS,VC15
3、拷贝4个扩展驱动文件
将上面四个文件拷贝到php目录下的ext目录下,我这里的目录是D:\XAMPP\path\php\ext
4、修改配置文件php.ini
D:\XAMPP\path\php\php.ini文件末尾(任意位置都可以)添加如下内容,支持扩展
-
;php_redis
-
extension=php_igbinary.dll
-
extension=php_redis.dll
注意:extension=php_igbinary.dll一定要放在extension=php_redis.dll的前面,否则此扩展不会生效
5、重启服务器Apache
这里Apache的集成环境是xampp,浏览器打开phpinfo(),看到redis扩展安装成功。
6、验证扩展是否可用
打开redis服务后,可以用如下方式测试是否能够调用。
-
<?php
-
//实例化Redis类
-
$redis = new Redis();
-
//选择指定的redis数据库连接,默认端口号为6379
-
$redis->connect('127.0.0.1', 6379);
-
//指定前面设置的密码
-
$redis->auth('123456');
-
echo "Connection to server sucessfully";
-
//设置 redis 字符串数据
-
$redis->set("tutorial-name", "Redis tutorial");
-
// 获取存储的数据并输出
-
echo "Stored string in redis:: " . $redis->get("tutorial-name");
-
?>
现在代码里面redis服务可用了,不会再报Class 'Redis' not found错了,到此Windows10系统 64位安装php的redis扩展安装成功。文末再次提醒大家,一定要根据php的版本信息和位数(32位还是64位)下载对应版本的扩展驱动文件,否则不生效。