我对这个错误感到疯狂.我有一个带有Debian 7的流浪汉VM,用Puphpet生成,安装很好.
redis-server
在跑 :
我可以使用服务器127.0.0.1:6379
:
php5-redis
实际安装:
这是我的redis配置文件app/local/database.php
:
'redis' => [ 'cluster' => false, 'default' => [ 'host' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], ],
// Get redis $redis = Redis::connection();
sudo service nginx reload sudo service redis-server force-reload composer dumpautoload
但没有解决错误.
我还在:
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();
)
我哪里错了?
顺便说一句,我讨厌星期一>.>
我在遇到这个问题后遇到了这个问题,并希望添加另一个答案,以防它帮助其他人.
在我的情况下,存在别名冲突,因为我的php配置启用了PHP-Redis模块/扩展 - PHP模块和Laravel似乎都有一个名为Redis的冲突对象.我只需使用整个命名空间标识符即可解决此问题:
//$r = Redis::connection()
$r = Illuminate\Support\Facades\Redis::connection();
问题不在于您的redis服务器设置 - 您的系统中存在错误配置或更改的内容.
你看到的错误
Call to undefined method Redis::connection()
PHP告诉你它无法找到connection
类上命名的方法Redis
.这是一个PHP错误,PHP永远不会试图与redis服务器通信.
通常,在Laravel 4.2系统中,没有名为的类Redis
.而是设置别名app/config/app.php
#File: app/config/app.php 'Redis' => 'Illuminate\Support\Facades\Redis',
变成Redis
了立面.这使你可以拨打电话Redis::connection
.
所以,你的系统出了问题.不管你
Redis
在设置别名之前,有一个名为somewhere 的自定义类
曾Redis
化名为比其他一些Illuminate\Support\Facades\Redis
门面类
您Redis
已对外观类进行了修改,以返回除以外的服务标识符redis
你redis
像其他一些班级一样反弹这项服务
根据下面的注释,您已Redis
安装PHP扩展并且全局扩展类"wins"
要找出PHP认为Redis
课程的位置,请尝试
$r = new ReflectionClass('Redis'); var_dump($r->getClassFile());
要查看#4
问题是否存在,请尝试直接调用该服务
$app = app(); $app['redis']->connection();
祝好运!