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

问题描述 投票:1回答:1

我将我的Laravel 5.5应用程序移动到另一台服务器 - 我使用完全相同的代码(做git clone)与完全相同的composer.jsoncomposer.lock文件(甚至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,我的系统上没有php-redis

在两个系统(debian)上安装redis并在127.0.0.1上运行。两个系统在.envconfig/*中使用相同的配置:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

唯一不同的是,在一个系统(旧的)上我运行php7.0并且在新系统上我运行php7.3 - 我在新系统上切换到php7.0以检查这是否是错误,但我仍然得到例外。

再一次 - 在我的其他服务器上,一切都运行良好,完全相同的代码,这让我感到沮丧 - 我无法弄清楚为什么会发生这种情况。

laravel redis laravel-5.5 predis phpredis
1个回答
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);

© www.soinside.com 2019 - 2024. All rights reserved.