【发布时间】:2019-04-04 10:43:21
【问题描述】:
我将我的 Laravel 5.5 应用程序移动到另一台服务器 - 我在那里使用完全相同的代码(做了一个 git clone)和完全相同的 composer.json 和 composer.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 上运行。两个系统在.env 和config/* 中使用相同的配置:
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
唯一不同的是,在一个系统(旧系统)上我正在运行 php7.0 而在新系统上我运行 php7.3 - 我在新系统上切换到 php7.0 以检查如果这是错误,但我仍然得到异常。
再一次 - 在我的另一台服务器上,使用完全相同的代码一切都运行良好,这让我很沮丧 - 我不知道为什么会这样。
【问题讨论】:
-
Redis 配置中是否将“集群”(如果存在)设置为“false”?
-
尝试“连接”而不是“连接”。见
$redis->connection(env('REDIS_HOST')); -
是的,
connection有效。我已经猜到了,但是为什么呢?我也不想更改代码。 -
因为你通过调用
Redis::connection();方法得到了一个Redis实例。这将为您提供默认 Redis 服务器的实例。您还可以将连接或集群名称传递给连接方法,以获取 Redis 配置中定义的特定服务器或集群 -
@JitendraAhuja - 你是绝对正确的!我匆匆忙忙把东西搞砸了。我一直在想我一直在使用 predis 扩展。伙计,非常感谢您的努力和时间!我犯了一个大错误,过去和现在都是非常紧张的一天。再次感谢您!
标签: laravel redis laravel-5.5 predis phpredis