我将Laravel 5.5应用程序移动到另一台服务器-我在那里使用完全相同的代码(git clone
)和完全相同的composer.json
和composer.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
在新系统上检查这是否是错误,但是我仍然遇到异常。
再一次-在我的另一台服务器上,使用完全相同的代码可以正常运行,这让我感到沮丧-我不知道为什么会这样。
答案 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)