Laravel 4: вызов неопределенного метода Redis:: connection()

Я схожу с ума по этой ошибке. У меня есть бродячая виртуальная машина с Debian 7, сгенерированная с Puphpet, установка была в порядке.

1. Redis установлен и работает

redis-server работает :

redis-server running

Я могу использовать сервер на 127.0.0.1:6379 :

enter image description here

2. php5-redis установлен

php5-redis фактически установлено :

enter image description here

3. Что Laravel Рэдис config установлен

вот мой файл Рэдис config в app/local/database.php :

'redis' => [

    'cluster' => false,

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

4. Вызов Redis прост:

// Get redis
$redis = Redis::connection();

5. Я много чего перепробовал

sudo service nginx reload
sudo service redis-server force-reload
composer dumpautoload

но ничего не решило ошибку.


у меня все еще есть:

ERROR: exception 'SymfonyComponentDebugExceptionFatalErrorException' with message 'Call to undefined method Redis::connection()' in /var/www/fd/app/menus/admin.menu.php:16

(строка 16, где я делаю соединение $redis = Redis::connection();)

где я ошибаюсь ?

кстати, я ненавижу понедельники >.>

4 ответов


я столкнулся с этим после встречи с этой проблемой и хотел добавить еще один ответ, если это поможет кому-то другому.

в моем случае было столкновение псевдонимов, потому что в моей конфигурации 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.

так, что-то не так с вашей системой. Либо ты

  1. есть пользовательский класс с именем Redis где-то, что загружается до установки псевдонимов

  2. есть Redis псевдоним на что-то другое, чем Illuminate\Support\Facades\Redis фасад класс

  3. вы Redis фасад класс был изменен, чтобы вернуть идентификатор службы, отличный от redis

  4. вы отскочили redis обслуживание как какой-то другой класс

  5. в комментариях ниже, у вас есть Redis установлено расширение PHP и глобальный класс расширения "wins"

чтобы узнать, где PHP думает Redis класс, попробовать

$r = new ReflectionClass('Redis');
var_dump($r->getClassFile());

чтобы увидеть, если #4 проблема, попробуйте вызвать службу прямо

$app = app();
$app['redis']->connection();

удачи!


эта ошибка заключается в том, что вы установили и включили модуль php5-redis, он стал с классом Redis. Чтобы избежать этой ошибки и использовать фасад Laravel Redis, необходимо изменить псевдоним в app/config / app.php (или что-то еще в вашей среде).

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

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

или просто настройте свой кэш.php использовать Redis и использовать только класс кэша. :)


установите расширение Redis на ПК.

загрузите правильную версию DDL по следующей ссылке: https://pecl.php.net/package/redis/4.1.0/windows

поместите dll в правильную папку

Wamp -> C:\wamp\bin\php\php-XXXX\ext
Laragon -> C:\laragon\bin\php\php-XXX\ext

редактировать добавлять

extension=php_redis.dll

перезагрузите сервер и проверьте phpinfo();. Теперь редис должен быть там!