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

che*_*ier 5 redis laravel phpredis predis laravel-5.5

我将 Laravel 5.5 应用程序移至另一台服务器 - 我在那里使用完全相同的代码(做了 a git clone)以及完全相同的composer.json文件composer.lock(甚至NGINX配置也相同)。

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

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Call to undefined method Illuminate\Support\Facades\Redis::connect()
Run Code Online (Sandbox Code Playgroud)

这是代码:

namespace App\Http\Controllers;
use Illuminate\Http\Request;
...
public function somefunction() {
    $redis = new \Redis();
    $redis->connect(env('REDIS_HOST')); <-------------
...
Run Code Online (Sandbox Code Playgroud)

作曲家软件包已安装,但我的系统上predis/predis没有。php-redis

在两个系统 (debian) 上都安装了 redis 并在127.0.0.1. .env两个系统在和 中使用相同的配置config/*

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Run Code Online (Sandbox Code Playgroud)

唯一不同的是,我在一个系统(旧系统)上运行php7.0,而在我运行的新系统上php7.3- 我切换到php7.0新系统以检查是否存在错误,但我仍然遇到异常。

再一次 - 在我的另一台服务器上,一切都运行良好,代码完全相同,这让我感到沮丧 - 我不明白为什么会发生这种情况。

Jit*_*uja 2

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

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

2) 如果您的 redis 配置中有 cluster,请确保将其设置为 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);