2010-04-17 17 views
72

mam wklejony przykład z php.net za korzystanie memcached w php, a ja dostaję:PHP memcached Fatal error: Class 'Memcache' nie znaleziono

Fatal error: Class 'Memcache' not found 

mam to w moim php.ini:

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

Oto informacje z php -I i php -m odpowiednio:

php -i | grep -i memcache
memcached
memcached support => enabled
libmemcached version => 0.37
Registered save handlers => files user sqlite memcached

php -m | grep -i memcache
memcached

php więc wydaje się, że załadowany MEMC obolały jak moduł, a php info mówi, że jest załadowany i używa w. 37. Nie próbowałem jeszcze przez Apache, używałem tego tylko przez cli już teraz. jakieś pomysły?

+1

możliwe duplikat ... http: //stackoverflow.com/questions/1171313/memcache-not -w-command-line-php-script –

+0

Po prostu rzuciłem okiem na to i już mam rozszerzenie wymienione w moim php.ini i już zapewniłem, że mój id_rozszerzeń jest wskazany we właściwym miejscu. – jpfuentes2

+0

Zobacz poniżej moją odpowiedź na proste polecenie instalacji "MEMCACHE". –

Odpowiedz

111

Istnieją dwa rozszerzenia dla memcached w PHP, "memcache" i "memcached".

Wygląda na to, że próbujesz użyć jednego ("memcache"), ale drugi jest zainstalowany ("memcached").

+4

To jest trochę głupie, ale jest to niestety częsty wzorzec w PHP. Zamiast uaktualniania starszego rozszerzenia do pracy z nowszymi rzeczami w lepszy sposób, ale z powrotem do tyłu kompt, po prostu stworzyli nowe rozszerzenie. Zobacz także mysql i mysqli. – Charles

+0

To wydaje się być właściwym problemem. Ale wszystkie instrukcje, które znajduję, wydają się mówić, żeby zainstalować memcached, ale zobacz memcache. To trochę zagmatwane. – pthurmond

+6

Ok, znalazłem prostą poprawkę (ponieważ wszystko inne wydawało się nie działać). Po prostu uruchom tę komendę: sudo aptitude install memcached php5-memcached – pthurmond

0

Po prawej: php_memcache.dll. W moim przypadku użyłem lib skompilowanego z vc9 zamiast kompilatora vc6. W apatche dzienników błędów mam coś takiego:

PHP Startup: sqlanywhere: Unable to initialize module Module compiled with build ID=API20090626, TS,VC9 PHP compiled with build ID=API20090626, TS,VC6 These options need to match

sprawdzić, czy masz ten sam dziennik i spróbuj pobrać inny dll, które są zestawiane z innego kompilatora.

1

znalazłem rozwiązanie w tym poście: https://stackoverflow.com/questions/11883378/class-memcache-not-found-php#=

znalazłem pracy dll dla PHP 5.4.4

Nie know-how są stabilne, ale działają one na pewno. Kredyty trafiają do tego linku.

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

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

To jest wersja 2.2.5.0, zauważyłem go po kompilacji (dla PHP 5.4.4).

Należy pamiętać, że nie jest to wersja 2.2.6, ale działa. Ja również odzwierciedliłem je we własnym FTP. linki lustro:

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

-5

poszedłem do wp-config/i usunięty obiekt-cache.php i zaawansowanym cache.php i to działało dobrze dla mnie.

+1

Lol, dobry dla ciebie;) – Piero

19

Dispite co mówi zaakceptowane odpowiedź w komentarzach, poprawny sposób, aby zainstalować 'Memcache' jest:

sudo apt-get install php5-memcache 
+0

Kilka lat później myślę, że ta odpowiedź jest nieaktualna. 'sudo apt-get install php-memcache' jest tym, co zadziałało. https://packages.ubuntu.com/search?keywords=memcache&searchon=names&suite=yakkety§ion=all pokazuje dostępne pakiety. – Ryan

+1

@Ryan Z pewnością dotyczy to tylko jeśli nie używasz PHP5. Wiele serwerów nadal używa PHP5, więc jest tak samo ważne, jak było w tym czasie. Dodatkowo pytanie jest oznaczone jako ubuntu-9.10, co dodatkowo potwierdza moją odpowiedź, ponieważ odnosi się bezpośrednio do tej wersji. –

Powiązane problemy