2009-07-23 17 views
15

Tengo instalado Memcache y trabajo para aplicaciones PHP ejecutadas a través de Apache (v2.2) pero cuando trato de ejecutar un archivo .php en la línea de comando obtengo este error:'Memcache' no encontrado en la línea de comandos script PHP

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

línea 94 es:

$memcache = new Memcache; 

otra información:

CentOS 5.2
PH P 5.2.5 (CLI) (construido el 20 febrero 2008 21:13:12)
Zend Engine v2.2.0, Derechos de autor (c) 1998-2007 Zend Technologies v2.2.8
Apache

Respuesta

25

Es de suponer que tiene archivos php.ini separados configurados para apache y la línea de comando (cli).

Si es así, es necesario agregar lo siguiente a su archivo php.ini CLI:

extension=memcache.so 

En Ubuntu está en /etc/php5/cli/php.ini

Si funciona entonces Memcache debe aparecer en la lista de módulos si ejecuta php -m en la línea de comandos.

O bien, puede crear un archivo /etc/php5/cond.d/memcache.ini con los mismos contenidos.

+0

Ran php -m y no está mostrando – rjstelling

+0

Hay algún otro módulos de trabajo para el cli? ¿Está "extension_dir" en el archivo cli php.ini? Si memcache.so está en el directorio predeterminado ( /usr/lib/php5/20060613/para mí), entonces puede dejar el comentario de extensión comentado. –

5

Es posible que tiene un archivo php.ini separado para el modo CLI. Este archivo puede no incluir la extensión de Memcache.

0

Para simplificar he utilizado:

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

En un entorno de desarrollo, suelo reemplazar mi cli php.ini por un enlace simbólico al apache, así que solo tengo un archivo (de manera predeterminada, la única diferencia en Ubuntu es que el límite de memoria es ilimitado en la línea de comandos). –

2

que tenía este tipo de error y también lo hice php -i | grep memcache y dice que Memcache está habilitado, pero mi solución que resolvió el problema fue cuando edité php.ini, simplemente modifiqué la extensión_dir = "./" en la ruta completa del directorio de extensiones que ahora se veía así, extension_dir = "/ usr/local/lib" - necesita verificar dónde reside el directorio de extensión del php y asegurarse de que memcache.so está allí.

luego simplemente reinicié httpd y lamentablemente el problema se ha ido.

puede comprobar los pasos detallados aquí:

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

0

Si no sabe qué php.ini la línea de comandos se utiliza, el tipo php -i. Obtendrá una larga lista de ajustes, donde algún lugar cerca de la parte superior de la lista verá lo que php.ini está siendo utilizado:

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) 
Cuestiones relacionadas