2009-07-23 8 views
15

J'ai Memcache installé et fonctionnant pour les applications PHP exécutées via Apache (v2.2) mais quand j'essaye d'exécuter un fichier .php dans la ligne de commande, j'obtiens cette erreur:'Memcache' introuvable dans la ligne de commande script PHP

Fatal error: Class 'Memcache' not found in /usr/local/Matters/app/matters-common/connection.php on line 94 

ligne 94 est:

$memcache = new Memcache; 

Autres infos:

CentOS 5.2
PH P 5.2.5 (cli) (construite: 20 février 2008 21:13:12)
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
Apache v2.2.8

Répondre

25

Vous avez probablement des fichiers php.ini séparés configurés pour apache et la ligne de commande (cli).

Si oui, vous devez ajouter ce qui suit à votre fichier php.ini cli:

extension=memcache.so 

Sur Ubuntu, il est en /etc/php5/cli/php.ini

Si elle travaille alors memcache devrait apparaître dans la liste des modules si vous exécutez php -m sur la ligne de commande. Vous pouvez également créer un fichier /etc/php5/cond.d/memcache.ini avec le même contenu.

+0

php -m et Ran ce n'est pas montrant – rjstelling

+0

a d'autres modules de travail pour la cli? Est-ce que "extension_dir" est défini dans le fichier cli php.ini? Si memcache.so se trouve dans le répertoire par défaut ( /usr/lib/php5/20060613/pour moi), vous pouvez laisser le fichier extension_dir en commentaire. –

5

Il est possible que vous avez un fichier php.ini distinct pour le mode CLI. Ce fichier peut ne pas inclure l'extension memcache.

0

Par souci de simplicité, j'utilisé:

php -c /etc/php.ini ./cli-script.php 
+0

Dans un environnement de développement j'ai tendance à remplacer mon php.ini cli par un lien symbolique vers l'apache, donc je n'ai qu'un seul fichier (par défaut, la seule différence sur Ubuntu est la limite de mémoire illimitée sur la ligne de commande). –

2

Je n'ai ce genre d'erreur et je l'ai aussi php -i | grep memcache et il dit memcache est activé, mais ma solution qui a résolu le problème était quand j'ai édité le php.ini, j'ai simplement modifié la ligne extension_dir = "./" pour le chemin complet du répertoire des extensions qui ressemblait maintenant à ceci, extension_dir = "/ usr/local/lib" - vous devez vérifier où réside le répertoire d'extension de php et vous assurer que memcache.so est là.

alors j'ai simplement redémarré httpd et hélas le problème est parti.

vous pouvez vérifier les étapes détaillées ici:

http://joemarie-aliling.com/223/php-programming/php-memcache-not-found-problem/

0

Si vous ne savez pas quel php.ini votre ligne de commande utilise, le type php -i. Vous obtiendrez une longue liste de paramètres, où quelque part près du sommet de la liste, vous verrez que php.ini est utilisé:

Configuration File (php.ini) Path => /Applications/MAMP/bin/php/php5.3.6/conf 
Loaded Configuration File => /Applications/MAMP/bin/php/php5.3.6/conf/php.ini 
Scan this dir for additional .ini files => (none) 
Additional .ini files parsed => (none) 
Questions connexes