web-dev-qa-db-fra.com

Classe 'Memcache' non trouvée & PHP

J'ai installé memcached en lisant cet article sur Windows7 mais malheureusement, je continue à avoir l'erreur Fatal error: Class 'Memcache' not found in D:\xampp\htdocs\test\memcache\test.php on line 2

Ligne 2: $memcache = new Memcache; 

Win7 64, Xampp installé. J'utilise net start "memcached Server" en ligne de commande, mais le service est déjà lancé.

Quelques autres informations qui peuvent aider;

Sur le fichier php.ini:

extension=php_memcache.dll

    [Memcache]  
    memcache.allow_failover = 1  
    memcache.max_failover_attempts=20  
    memcache.chunk_size =8192  
    memcache.default_port = 11211  

Mise à jour: phpinfo (); show dll n'est pas chargé. Essayé plusieurs fichiers DLL différents jusqu'à présent, n'a pas fonctionné. Aussi dll est situé correct. C'est dans le bon dossier comme il semble.

(P.S. Certains peuvent penser qu'il y a des doublons possibles sur ce sujet mais il n'y a qu'une personne qui a suivi les mêmes instructions et a eu la même erreur en SO. Cette question n'a pas de réponse ni de solution depuis mars.)

18
Mustafa

J'ai trouvé les fichiers dll de travail pour PHP 5.4.4

Je ne sais pas comment ils sont stables mais ils travaillent à coup sûr. Les crédits vont à ce lien .

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

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

C'est la version 2.2.5.0 que j'ai remarquée après l'avoir compilée (pour PHP 5.4.4).

S'il vous plaît noter que ce n'est pas 2.2.6 mais fonctionne. Je les ai aussi reflétés dans mon propre FTP . Liens en miroir:

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

11
Mustafa

Ajoutez ceci à votre php.ini:

extension="php_memcache.dll"

et redémarrez Apache

7
Edson Medina

Memcached utilise uniquement une interface texte standard, il est donc possible de l'utiliser sans le module.

// connect
$link = fsockopen($Host,$port,$errno,$errst,$timeout);

// set
$data = sprintf("set %s 0 %s %s\r\n%s\r\n",
            $key,$expire,strlen($value),$value);
fwrite($link,$data);
$result = trim(fgets($link));
if ($result == 'ERROR') {
    // :(
}

// get
$data = sprintf("get %s\r\n",$key);
fwrite($link,$data);
$line = rtrim(fgets($link)); 
if ($line != 'END') {
    return rtrim(fgets($link));
}
5
James Hackett

J'ai donc cherché une solution. Ici, vous pouvez télécharger des extensions compilées.

http://downloads.php.net/pierre/

Le problème est qu’il n’existe actuellement aucune extension memcache pour PHP 5.4. C'est le problème pour lequel votre extension n'a pas pu être chargée. Vous avez besoin de l'extension pour la bonne version PHP et Tead Safe pour Windows.

Le moyen le plus simple est donc de travailler avec PHP 5.3 si vous avez besoin de l'extension.

La version la plus récente de memcache est la version 3.0.6, mais sa version bêta est visible ici.

http://pecl.php.net/package/memcache

Vous pouvez essayer de prendre la version bêta et compiler it avec votre système Windows. Mais c'est beaucoup de travail.

4
René Höhle

Un autre problème peut être lié au chargement d’une autre version du module php quelque part dans les fichiers Apache .conf. Besoin de vérifier les directives "LoadModule php ..." dupliquées et si ce module a été compilé pour corriger la version d'Apache. Cela semble simple, mais pas lorsque vous avez plusieurs versions de php sur une machine:) Ou cela peut aussi être un problème avec SElinux.

0
Ivanov Oleksandr

xampp windows version est 32bit, vous devez utiliser 32bit memcache.dll

Je trou qui serait utile pour vous!

0
Shaun.lan