PHP memcached Schwerwiegender Fehler: Klasse 'Memcache' nicht gefunden

80

Ich habe das Beispiel von php.net für die Verwendung von memcached in php eingefügt und erhalte :

Fatal error: Class 'Memcache' not found

Ich habe dies in meiner php.ini:

[memcache]
memcache.hash_strategy = "konsistenter"
memcache.max_failover_attemps = 100
memcache.allow_failover = 1

Hier sind Informationen von php -i bzw. php -m:

php -i | grep -i memcache
memcached
memcached support => aktivierte
libmemcached version => 0.37
Registrierte Sicherungshandler => Dateien Benutzer sqlite memcached

php -m | grep -i memcache
memcached

PHP scheint also memcached als Modul geladen zu haben, und PHP-Informationen besagen, dass es geladen ist und v .37 verwendet. Ich habe es noch nicht über Apache versucht, ich benutze es jetzt nur über Cli. Irgendwelche Gedanken?

jpfuentes2
quelle
1
Mögliches Duplikat ... stackoverflow.com/questions/1171313/…
Ich habe mir das gerade angesehen und habe die Erweiterung bereits in meiner php.ini aufgelistet und ich habe bereits sichergestellt, dass mein extension_dir auf die richtige Stelle zeigt.
jpfuentes2
In meiner Antwort unten finden Sie den einfachen Befehl zum Installieren von 'MEMCACHE'.
Phill Healey
1
sudo apt-get install php-memcachehat bei mir funktioniert. packages.ubuntu.com/… zeigt verfügbare Pakete an.
Ryan

Antworten:

129

Es gibt zwei Erweiterungen für memcached in PHP, " memcache " und " memcached ".

Es sieht so aus, als würden Sie versuchen, einen zu verwenden ("memcache"), aber der andere ist installiert ("memcached").

Charles
quelle
4
Es ist irgendwie albern, aber es ist ein leider häufiges Muster in PHP. Anstatt die ältere Erweiterung zu aktualisieren, um besser mit neueren Dingen arbeiten zu können, aber rückwärts zu brechen, haben sie einfach eine neue Erweiterung erstellt. Siehe auch mysql und mysqli.
Charles
Dies scheint das richtige Problem zu sein. Aber alle Anweisungen, die ich finde, scheinen zu sagen, um memcached zu installieren, aber siehe memcache. Das ist etwas verwirrend.
Patrick
7
Ok, ich habe eine einfache Lösung gefunden (da alles andere nicht zu funktionieren schien). Führen Sie einfach diesen Befehl aus: sudo aptitude install memcached php5-memcached
Patrick
Beachten Sie, dass diese Paketnamen nur für bestimmte Debian-Derivate funktionieren. Die Paketnamen unterscheiden sich in anderen Umgebungen.
Charles
1
Es sollte keine wirklichen Auswirkungen auf die Leistung haben, wenn beide geladen sind.
Charles
21

Ungeachtet dessen, was in der akzeptierten Antwort in den Kommentaren steht, ist die richtige Art, 'Memcache' zu installieren:

sudo apt-get install php5-memcache

HINWEIS Memcache & Memcached sind zwei unterschiedliche, jedoch verwandte Softwareteile, die häufig verwechselt werden.

BEARBEITEN Da dies jetzt ein alter Beitrag ist, hielt ich es für erwähnenswert, dass Sie PHP5 durch Ihre PHP-Versionsnummer ersetzen sollten .

Phill Healey
quelle
Ein paar Jahre später denke ich, dass diese Antwort veraltet ist. sudo apt-get install php-memcachehat bei mir funktioniert. packages.ubuntu.com/… zeigt verfügbare Pakete an.
Ryan
1
@ Ryan Das gilt sicherlich nur, wenn PHP5 nicht verwendet wird. Viele Server verwenden immer noch PHP5, daher ist es genauso gültig wie damals. Zusätzlich ist die Frage mit ubuntu-9.10 gekennzeichnet, wodurch meine Antwort weiter bestätigt wird, da sie sich direkt auf diese Version bezieht.
Phill Healey
"Memcached & Memcached" ??
Brian Leishman
Gibt es eine Lösung für Windows?
IrfanAnwar vor
1

Ich habe in diesem Beitrag eine Lösung gefunden: /programming/11883378/class-memcache-not-found-php# =

Ich habe die funktionierenden DLL-Dateien für PHP 5.4.4 gefunden

Ich weiß nicht, wie stabil sie sind, aber sie funktionieren auf jeden Fall. Credits gehen an diesen Link.

http://x32.elijst.nl/php_memcache-5.4-nts-vc9-x86.zip

http://x32.elijst.nl/php_memcache-5.4-vc9-x86.zip

Es ist die Version 2.2.5.0, die ich nach dem Kompilieren bemerkt habe (für PHP 5.4.4).

Bitte beachten Sie, dass es nicht 2.2.6 ist, sondern funktioniert. Ich habe sie auch in meinem eigenen FTP gespiegelt. Spiegellinks:

http://mustafabugra.com/resim/php_memcache-5.4-vc9-x86.zip http://mustafabugra.com/resim/php_memcache-5.4-nts-vc9-x86.zip

Xman Klassik
quelle
0

Das Recht ist php_memcache.dll . In meinem Fall habe ich lib verwendet, das mit vc9 kompiliert wurde, anstatt mit vc6 compiler. In Apatche-Fehlerprotokollen habe ich so etwas wie:

PHP-Start: sqlanywhere: Modul kann nicht initialisiert werden Modul kompiliert mit Build-ID = API20090626, TS, VC9 PHP kompiliert mit Build-ID = API20090626, TS, VC6 Diese Optionen müssen übereinstimmen

Überprüfen Sie, ob Sie dasselbe Protokoll haben, und laden Sie verschiedene DLLs herunter, die mit verschiedenen Compilern kompiliert wurden.

Dalius Šidlauskas
quelle
0

Für OSX-Benutzer:

Führen Sie den folgenden Befehl aus, um Memcached zu installieren:

brew install memcached
Maihan Nijat
quelle
-8

Ich ging in wp-config / und löschte die object-cache.php und advanced-cache.php und es funktionierte gut für mich.

erwacht
quelle
2
Alles, was Sie getan haben, war zu verhindern, dass Ihre WordPress-Installation Objekt-Caching durchführen kann. Es ist eigentlich keine Lösung für irgendetwas, geschweige denn für die vom OP gestellte Frage.
Phill Healey