2010-04-17 13 views
72

me ha pegado el ejemplo de php.net para el uso de memcached en php y me estoy poniendo:PHP memcached Fatal error: 'Memcache' clase no encontró

Fatal error: Class 'Memcache' not found 

tengo esto en mi php.ini:

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

Aquí hay información de php -i y php -m respectivamente:

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

Así php parece haber cargado MEMC dolido como un módulo, y la información de php dice que está cargado y está utilizando v .37. Todavía no lo he probado a través de apache, solo he estado usando esto a través de cli en este momento. ¿Alguna idea?

+1

posible duplicado ... http: //stackoverflow.com/questions/1171313/memcache-not -fund-in-command-line-php-script –

+0

Acabo de echarle un vistazo a eso y ya tengo la extensión listada en mi php.ini y ya me he asegurado de que mi extension_dir apunta al lugar correcto. – jpfuentes2

+0

Consulte mi respuesta a continuación para obtener el sencillo comando para instalar 'MEMCACHE'. –

Respuesta

111

Hay dos extensiones para memcached en PHP, "memcache" y "memcached".

Parece que estás tratando de usar uno ("memcache"), pero el otro está instalado ("memcached").

+4

Es un poco tonto, pero es un patrón desafortunadamente frecuente en PHP. En lugar de actualizar la extensión anterior para trabajar con cosas más nuevas de una mejor manera, pero rompiendo compts hacia atrás, simplemente crearon una nueva extensión. Ver también mysql y mysqli. – Charles

+0

Parece ser el problema correcto. Pero todas las instrucciones que encuentro parecen indicar la instalación de memcached, pero vea Memcache. Esto es un poco confuso – pthurmond

+6

Ok, encontré una solución simple (ya que todo lo demás parecía no funcionar). Simplemente ejecute este comando: sudo aptitude install memcached php5-memcached – pthurmond

0

El derecho es php_memcache.dll. En mi caso, estaba usando lib compiled con vc9 en lugar del compilador vc6. En apatche registros de errores me dieron algo como:

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

Compruebe si tiene misma registro e intente descargar diferentes DLL que se compila con diferentes compilador.

1

He encontrado la solución en este post: https://stackoverflow.com/questions/11883378/class-memcache-not-found-php#=

encontré los archivos DLL de trabajo para PHP 5.4.4

No know-how son estables pero funcionan con seguridad. Créditos va a este enlace.

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

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

Es la versión 2.2.5.0, me di cuenta después de la compilación (para PHP 5.4.4).

Tenga en cuenta que no es 2.2.6 pero funciona. También los refleje en mi propio FTP. enlaces espejo:

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

-5

que entraron en wp-config/y elimina el objeto-cache.php y avanzado-cache.php y funcionó bien para mí.

+1

Lol, bien por ti;) – Piero

19

Dispite lo que la respuesta aceptada dice en los comentarios, la forma correcta de instalar 'Memcache' es:

sudo apt-get install php5-memcache 
+0

Un par de años después, creo que esta respuesta está desactualizada. 'sudo apt-get install php-memcache' es lo que funcionó para mí. https://packages.ubuntu.com/search?keywords=memcache&searchon=names&suite=yakkety§ion=all muestra los paquetes disponibles. – Ryan

+1

@Ryan Seguramente, eso solo se aplica si no se usa PHP5. Muchos servidores todavía usan PHP5 por lo que es tan válido como lo era en ese momento. Además, la pregunta está etiquetada ubuntu-9.10, por lo que valida aún más mi respuesta ya que se relaciona directamente con esa versión. –

Cuestiones relacionadas