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

标签 laravel redis laravel-5.5 predis phpredis

我将我的 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')); <-------------
...

composer 包 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 以检查是否是错误,但我仍然遇到异常。

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

最佳答案

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

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:* 收听 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 已建立 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 已建立

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

'driver' => 'redis'

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

'driver' => 'redis'

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

使用 Illuminate\Redis\Database 作为 Redis;

“使用 Illuminate\Support\Facades\Redis”

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

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

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

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

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

关于Laravel 5.5 Redis 问题 - 调用未定义的方法 Illuminate\Support\Facades\Redis::connect(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55513911/

相关文章:

php - Laravel 中的错误爆炸

redis - phpredis中的MULTI/EXEC命令是否一次发送命令?

php - Laravel:简单表单获取请求返回 500 错误

laravel - 批量更新 Laravel 中具有多关系的表

python - Redis keyspace notifications - 获取键和值的变化

serialization - REDIS 中 HMSET 的 RESP 格式

php - 拉维尔 5.5 : array_combine(): Both parameters should have an equal number of elements

laravel - 如何使用 Laravel 5.5 身份验证使电子邮件登录不区分大小写

mysql - 从 laravel 5.4 升级到 laravel 5.5 后出错

php - 找不到 Laravel 5 模型命名空间类