2009-07-23 10 views
15

Ich habe Memcache installiert und funktioniert für PHP-Anwendungen über Apache (v2.2) aber wenn ich versuche, eine .php-Datei in der Befehlszeile auszuführen, erhalte ich diesen Fehler:'Memcache' nicht in der Befehlszeile gefunden PHP-Skript

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

Linie 94 ist:

$memcache = new Memcache; 

Weitere Informationen:

CentOS 5.2
PH P 5.2.5 (cli) (gebaut: 20. Februar 2008 21.13.12)
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
Apache v2.2.8

Antwort

25

Vermutlich haben Sie separate php.ini-Dateien für Apache und die Befehlszeile (CLI) eingerichtet.

Wenn ja, müssen Sie Folgendes Ihre cli php.ini-Datei hinzuzufügen:

extension=memcache.so 

auf Ubuntu ist es in /etc/php5/cli/php.ini

Wenn es funktioniert, dann Memcache sollte in der Liste der Module angezeigt werden, wenn Sie in der Befehlszeile php -m ausführen. Sie können auch eine Datei /etc/php5/cond.d/memcache.ini mit dem gleichen Inhalt erstellen.

+0

Ran php -m und es zeigt nicht – rjstelling

+0

Sind andere Module für die Arbeits CLI? Ist "extension_dir" in der Datei cli php.ini eingestellt? Wenn memcache.so im Standardverzeichnis ist ( /usr/lib/php5/20060613/für mich), dann können Sie extension_dir auskommentiert lassen. –

5

Es ist möglich, dass Sie haben eine separate php.ini-Datei für den CLI-Modus. Diese Datei enthält möglicherweise keine Memcache-Erweiterung.

0

Der Einfachheit halber habe ich:

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

In einer Entwicklungsumgebung tendiere ich dazu, meine cli php.ini durch einen Symlink zum Apache zu ersetzen, so dass ich nur eine Datei habe (der einzige Unterschied auf Ubuntu ist, dass das Speicherlimit auf der Kommandozeile auf unlimited gesetzt ist). –

2

ich diese Art von Fehler hatte, und ich habe auch php -i | grep memcache und es sagt Memcache ist aktiviert, aber meine Lösung, die das Problem löste, war, als ich die php.ini editierte, ich änderte einfach die extension_dir = "./" Zeile auf den vollen Pfad des extensions Verzeichnisses, das nun so aussah, extension_dir = "/ usr/local/lib" - Sie müssen überprüfen, wo das Erweiterungsverzeichnis des PHP residieren und stellen Sie sicher, dass memcache.so ist da ..

dann habe ich einfach httpd neu gestartet und leider ist das Problem weg.

können Sie die detaillierten Schritte hier überprüfen:

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

0

Wenn Sie nicht wissen, welche php.ini Ihre Befehlszeile verwenden, geben Sie php -i. Sie werden eine lange Liste von Einstellungen erhalten, wo irgendwo in der Nähe der Spitze der Liste sehen Sie die php.ini verwendet wird:

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) 
Verwandte Themen