Laravel 5.5 Redis问题-调用未定义的方法Illuminate \ Support \ Facades \ Redis :: connect()

时间:2019-04-04 10:43:22

标签: laravel redis laravel-5.5 predis phpredis

我将Laravel 5.5应用程序移动到另一台服务器-我在那里使用完全相同的代码(git clone)和完全相同的composer.jsoncomposer.lock文件(甚至是{{ 1}}的配置是相同的。

运行我的应用程序时,出现以下错误:

NGINX

代码如下:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Call to undefined method Illuminate\Support\Facades\Redis::connect()

作曲家软件包namespace App\Http\Controllers; use Illuminate\Http\Request; ... public function somefunction() { $redis = new \Redis(); $redis->connect(env('REDIS_HOST')); <------------- ... 已安装,并且我的系统上没有predis/predis

在两个系统(debian)上都已安装redis并在php-redis上运行。两种系统在127.0.0.1.env中使用相同的配置:

config/*

唯一的不同是,在一个系统(旧系统)上,我正在运行REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 ,而在新系统上,我正在运行php7.0-我切换到php7.3在新系统上检查这是否是错误,但是我仍然遇到异常。

再一次-在我的另一台服务器上,使用完全相同的代码可以正常运行,这让我感到沮丧-我不知道为什么会这样。

2 个答案:

答案 0 :(得分:1)

我认为这些是您需要检查的一些基本步骤:

1)首先,确保已安装phpredis PHP扩展

2)如果您的redis配置中包含集群,请确保将其设置为false:请参见

'cluster' => false,

3)尝试检查Redis服务器是否正在运行,并且Redis客户端能够与其连接。有时redis服务器崩溃或意外关闭,那么您可能必须重新启动或关闭它们,然后重新工作。

4)如果您在* nix环境中运行,则可以检查netstat输出以查看Redis是否正在监听您配置为监听的端口(例如6379):

netstat -na | grep 6379

如果正在侦听,您应该看到如下输出:

tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:53760 127.0.0.1:6379 TIME_WAIT tcp 0 0 127.0.0.1:6379 127.0.0.1:48107 ESTABLISHED tcp 0 0 127.0.0.1:53758 127.0.0.1:6379 TIME_WAIT tcp 0 0 127.0.0.1:48107 127.0.0.1:6379 ESTABLISHED

5)在app / config / cache.php中,将驱动程序设置为redis:

'driver' => 'redis'

6)尝试在app / config / session.php中使用redis作为驱动程序:

'driver' => 'redis'

7)在源顶部添加以下内容:

use Illuminate\Redis\Database as Redis;

"use Illuminate\Support\Facades\Redis"

8)尝试将类别名更改为app / config / app.php中的RedisL4,例如

'RedisL4' => 'Illuminate\Support\Facades\Redis',

然后使用此代码可能可以解决问题:

$redis = RedisL4::connect();或更重要的是它的“连接”而不是“连接”,所以

$redis = RedisL4::connection(Your-Connection-Here);

答案 1 :(得分:0)

确保您正确传递了 REDIS_CLIENT

对我来说,我已经通过作曲家安装了predis,但是REDIS_CLIENT设置为phpredis

我必须在我的database.php / .env文件中将 REDIS_CLIENT 更改为 predis

REDIS_CLIENT = predis