首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 4:调用未定义的方法Redis::connection()

Laravel 4:调用未定义的方法Redis::connection()
EN

Stack Overflow用户
提问于 2014-09-22 13:51:19
回答 4查看 11.5K关注 0票数 11

我要为这个错误疯狂了。我有一个带有Debian 7的迷途虚拟机,用Puphpet生成,安装很好。

1.安装和工作

redis-server正在运行:

我可以在127.0.0.1:6379上使用服务器:

2.安装php5-redis

实际上已经安装了php5-redis

3.设置了Laravel Redis配置。

以下是app/local/database.php中的redis配置文件:

代码语言:javascript
运行
复制
'redis' => [

    'cluster' => false,

    'default' => [
    'host'     => '127.0.0.1',
    'port'     => 6379,
    'database' => 0,
    ],
],

4.对Redis的呼吁很简单:

代码语言:javascript
运行
复制
// Get redis
$redis = Redis::connection();

5.我尝试了很多事情

代码语言:javascript
运行
复制
sudo service nginx reload
sudo service redis-server force-reload
composer dumpautoload

但没什么能解决这个错误。

我仍然有:

代码语言:javascript
运行
复制
ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to undefined method Redis::connection()' in /var/www/fd/app/menus/admin.menu.php:16

(第16行是我执行连接$redis = Redis::connection();的地方)

我哪里错了?

顺便说一句,我讨厌星期一>.>

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-10-18 03:10:46

在遇到这个问题后,我遇到了这个问题,我想补充另一个答案,以防它对其他人有帮助。

在我的例子中,有一个别名冲突,因为我的php配置启用了PHP-Redis模块/扩展-- PHP模块和Laravel似乎都有一个名为Redis的冲突对象。我能够简单地通过使用整个命名空间标识符来解决这个问题:

代码语言:javascript
运行
复制
//$r = Redis::connection() 
$r = Illuminate\Support\Facades\Redis::connection();
票数 22
EN

Stack Overflow用户

发布于 2014-09-22 17:13:24

问题不在于您的redis服务器设置--您的系统中有错误的配置或更改。

你看到的错误

代码语言:javascript
运行
复制
Call to undefined method Redis::connection()

PHP告诉您它在类connection上找不到一个名为Redis的方法。这是一个PHP错误,PHP永远不会尝试与redis服务器对话。

通常,在Laravel4.2系统中,没有名为Redis的类。相反,在app/config/app.php中设置了别名。

代码语言:javascript
运行
复制
#File: app/config/app.php
'Redis'           => 'Illuminate\Support\Facades\Redis',

它将Redis转换成一个外观。这使您能够打像Redis::connection这样的电话。

你的系统出了点问题。要么是你

  1. 在设置别名之前,在某个地方加载名为Redis的自定义类
  2. 是否将Redis别名为Illuminate\Support\Facades\Redis外观类以外的其他内容?
  3. 您的Redis外观类已被修改为返回redis以外的服务标识符。
  4. 您已经将redis服务恢复为其他类
  5. 根据下面的注释,您已经安装了Redis PHP扩展和全局扩展类"wins“。

要找出PHP认为Redis类在哪里,请尝试

代码语言:javascript
运行
复制
$r = new ReflectionClass('Redis');
var_dump($r->getClassFile());

要查看#4是否是问题所在,请直接调用服务

代码语言:javascript
运行
复制
$app = app();
$app['redis']->connection();

祝好运!

票数 6
EN

Stack Overflow用户

发布于 2015-01-08 00:34:14

这个错误是因为您已经安装并启用了php5-redis模块,所以它变成了Redis类。为了避免这个错误并使用,您必须更改app/config/app.php中的别名(或者您的环境)。

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

'RedisFacade' => 'Illuminate\Support\Facades\Redis' //whatever you like

或者将您的cache.php配置为使用Redis,并且只使用Cache类。:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25975794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档