Laravel 4 : Call to undefined method Redis::Anschluss()
Ich werde verrückt, über diesen Fehler.
Ich habe eine vagrant VM mit Debian 7, erzeugt mit Puphpet, installation war in Ordnung.
1. Redis ist installiert und funktioniert
redis-server
läuft :
Kann ich mit dem server auf 127.0.0.1:6379
:
2. php5-redis installiert ist
php5-redis
eigentlich installiert ist :
3. Laravel Redis config eingestellt ist
Hier ist mein redis config-Datei in app/local/database.php
:
'redis' => [
'cluster' => false,
'default' => [
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
],
4. Der Aufruf von Redis ist einfach :
//Get redis
$redis = Redis::connection();
5. Ich habe versucht, eine Menge Dinge
sudo service nginx reload
sudo service redis-server force-reload
composer dumpautoload
Aber nichts, behoben den Fehler.
Bin ich immer noch :
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
(Zeile 16 ist, wo ich die Verbindung $redis = Redis::connection();
)
Wo bin ich falsch ?
Btw, ich hasse Montag >.>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stieß ich auf diese nach der Begegnung mit diesem Thema und wollte eine andere Lösung, falls es jemandem hilft.
In meinem Fall, es war ein alias Kollision, weil meine php-Konfiguration PHP-Redis-Modul/Erweiterung aktiviert-sowohl das PHP-Modul und Laravel scheint ein Konflikt stehende Objekt mit dem Namen Redis. Ich war in der Lage, diese zu lösen, indem einfach die gesamte Namespace identifier:
'Redis2' => 'Illuminate\Support\Facades\Redis',
Dann tunphp artisan dump-autoload
Note: If you have the Redis PHP extension installed via PECL, you will need to rename the alias for Redis in your app/config/app.php file.
Anscheinend das heißt: 1. benennen Sie den alias inapp/config/app.php
aus'Redis' => 'Illuminate\Support\Facades\Redis',
zu, d.h.,'LRedis' => ...
2. Problemartisan dump-autoload
Befehl 3. verwenden Sie das alias umbenannt in code:$r = LRedis::connection();
Das problem ist nicht mit Ihr redis-server-setup -- es gibt etwas falsch konfiguriert oder geändert in Ihrem system.
Den Fehler, dass Sie sehen
Ist die PHP-erzählen Sie es nicht finden können, eine Methode mit dem Namen
connection
auf die KlasseRedis
. Es ist ein PHP Fehler, PHP und nie herum, um zu versuchen zu sprechen, um die redis-server.Normalerweise in einer Laravel 4.2-system, es gibt keine Klasse mit dem Namen
Redis
. Stattdessen ein alias eingerichtet ist, inapp/config/app.php
schaltet
Redis
in einer Fassade. Dies ist, was ermöglicht es Ihnen, Anrufe zu machen, wieRedis::connection
.So, es ist etwas falsch mit Ihrem system. Entweder Sie
Haben eine eigene Klasse namens
Redis
irgendwo geladen ist, bevor Sie die Aliase einrichtenHaben
Redis
alias auf etwas anderes als dieIlluminate\Support\Facades\Redis
Fassade-KlasseDu
Redis
Fassade-Klasse wurde geändert und gibt ein service-Bezeichner anderen alsredis
Hast du rebound den
redis
Dienst, wie einige andere KlassePro die Kommentare unten, haben Sie die
Redis
PHP-Erweiterung installiert und die Globale Erweiterung der Klasse "gewinnt"Finden Sie heraus, wo PHP denkt, dass das
Redis
Klasse ist, versuchenUm zu sehen, ob
#4
ist das problem, versuchen Sie den Aufruf der service direktGlück!
Redis::connection()
mit$app['redis']->connection()
gearbeitet. Ich muss noch ein Fehler irgendwo anders, wenn ich es herausfinde, poste ich es hier in die Kommentare, danke !Dass Fehler ist, da Sie installiert und aktiviert das Modul php5-redis, wurde es mit der Klasse Redis. Um zu vermeiden, dass Fehler und verwenden Sie die Laravel Redis Fassade, müssen Sie den alias ändern in app/config/app.php (oder was auch immer ist Ihre Umgebung).
'Redis' => 'Illuminate\Support\Facades\Redis'
'RedisFacade' => 'Illuminate\Support\Facades\Redis' //whatever you like
oder einfach konfigurieren Sie Ihre cache.php verwenden Redis und verwenden Sie nur die Cache-Klasse. 🙂
Install Redis-Erweiterung auf Ihrem PC.
Laden Sie die RICHTIGE version der DDL unter dem folgenden link:
https://pecl.php.net/package/redis/4.1.0/windows
Legen Sie die dll in den richtigen Ordner
Bearbeiten Sie die
php.ini
Datei hinzufügenServer-Neustart und überprüfen
phpinfo();
. Jetzt Redis sollte es sein!