2009-07-23 18 views
15

Ho Memcache installato e funzionante per le applicazioni PHP eseguito attraverso Apache (v2.2) ma quando provo ad eseguire un file .php nella riga di comando ottengo questo errore:'Memcache' non trovato nella riga di comando Script PHP

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

linea 94 è:

$memcache = new Memcache; 

Altre info:

CentOS 5.2
PH P 5.2.5 (CLI) (costruita: 20 Febbraio 2008 21:13:12)
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
Apache v2.2.8

risposta

25

Presumibilmente si dispone di file php.ini separati impostati per apache e la riga di comando (cli).

Se è così, è necessario aggiungere quanto segue al cli file php.ini:

extension=memcache.so 

Su Ubuntu è in /etc/php5/cli/php.ini

Se funziona allora memcache dovrebbe apparire nell'elenco dei moduli se si esegue php -m sulla riga di comando.

In alternativa, è possibile creare un file /etc/php5/cond.d/memcache.ini con lo stesso contenuto.

+0

Ran php -m e non sta mostrando – rjstelling

+0

sono eventuali altri moduli che lavorano per la cli? "Extension_dir" è impostato nel file cli php.ini? Se memcache.so si trova nella directory predefinita ( /usr/lib/php5/20060613/per me), è possibile lasciare extension_dir commentato. –

5

E 'possibile che hai un file php.ini separato per la modalità CLI. Questo file potrebbe non includere l'estensione memcache.

0

Per semplicità ho usato:

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

In un ambiente di sviluppo t tendono a sostituire il mio cli php.ini con un link simbolico a quello di apache, quindi ho solo un file (di default l'unica differenza su Ubuntu è il limite di memoria impostato su illimitato sulla riga di comando). –

2

ho avuto questo tipo di errore e ho anche fatto php -i | grep memcache e dice che memcache è abilitato, ma la mia soluzione che risolve il problema è stata quando ho modificato il php.ini, ho semplicemente modificato la extension_dir = "./" line al percorso completo della directory extensions che ora assomigliava a questo, extension_dir = "/ usr/local/lib" - devi controllare dove si trova la directory di estensione del php e assicurarti che memcache.so sia lì ..

quindi ho semplicemente riavviato httpd e purtroppo il problema non c'è più.

è possibile controllare la procedura dettagliata qui:

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

0

Se non si sa quale php.ini la linea di comando usa, tipo php -i. Si otterrà un lungo elenco di impostazioni, dove da qualche parte vicino alla parte superiore della lista potrete vedere che php.ini viene utilizzato:

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)