2010-05-14 48 views
6

estoy recibiendo ambos módulos que figuran como instalado/configurado cuando uso:Extensión PHP (memcache | memcached) no se muestra en phpinfo() pero se muestra en php -m y php -i?

php -m 

o si uso:

php -i 

pero cuando se utiliza:

$m = new Memcache; 
// or 
$m = new Memcache(); 
// or 
$m = new Memcached(); 
//or 
$m = new Memcached; 

consigo el el siguiente error:

Fatal error: Class 'Memcached' not found 

Me estoy ejecutando en un Mac - OS X (10.5.7) con la instalación predeterminada de apache & php. Además, tengo memcached en ejecución como daemon en 127.0.0.1:11211 y libmemcache según lo requerido por la biblioteca php-memcached. He reiniciado apache toneladas de veces e incluso he hecho un reinicio de la máquina.

¿Alguien sabe por qué los módulos/extensiones aparecen en la línea de comandos pero no en mi phpinfo()? Estoy literalmente perplejo, después de 3 horas de googlear, estoy a punto de darme por vencido.

Además, tenga en cuenta, mi phpinfo() muestra mis archivos ini como sigue y ambos son el mismo archivo exacto:

Configuration File (php.ini) Path: /etc 
Loaded Configuration File: /private/etc/php.ini 

ACTUALIZACIÓN:

Apache está fallando para cargar la extensión .

[Fri May 14 04:22:26 2010] [warn] Init: Session Cache is not configured [hint: SSLSessionCache] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcached.so' - (null) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcache.so' - (null) in Unknown on line 0

¿Alguien sabe por qué o cómo sucederá esto? Los dos archivos mencionados anteriormente DEFINITIVAMENTE ESTÁN allí. ¿Debo mover esta pregunta a la falla del servidor?

Respuesta

3

porque ambas versiones utilizan diferentes php.ini
lugar en su php.ini ubicación se señala en el phpinfo() outout

+0

Este es mi salida de phpinfo: archivo de configuración (php.ini) Path: \t/etc cargado el archivo de configuración: \t /private/etc/php.ini ambos son lo mismo. – Auston

4

su servidor web está utilizando probablemente mod_php, que es un poco separada del código de la independiente (CLI) Interprete. Si ambos están usando el mismo archivo ini, y la extensión de Memcache está configurada en el archivo ini, entonces parece que por alguna razón, el mod_php no está cargando la extensión - verifique el error_log de su servidor web para ver si hay errores de inicio.

Puede ser que el mod_php se haya compilado sin compatibilidad con Memcache (la mayoría de las extensiones deben tener un archivo de resguardo vinculado al código php, aunque la mayor parte del código no esté enlazado hasta el tiempo de ejecución). O puede ser un problema de permisos en el archivo de objeto compartido. O su servidor web puede estar ejecutando chroot, y no puede encontrar la extensión (lo que también significa que aunque los archivos ini parecen tener la misma ruta, esto es relativo a diferentes raíces).

HTH

C.

+0

(¿o quizás no ha reiniciado su servidor web desde que cambió la configuración?) – symcbean

+0

¡No está cargando la extensión! ¡Gracias! – Auston

2

sospecharía que la cuestión gira en torno a los permisos. Cuando ejecuta php desde la línea de comando, se ejecuta como el usuario que lo invoca. Cuando se ejecuta como un módulo de Apache, se ejecuta como "nadie".

Supongo que el archivo memcached.so, o el directorio en el que se encuentra no tiene los permisos adecuados.

1

Me tropecé con esta publicación y estaba teniendo exactamente el mismo problema con una extensión en mi php -i pero no en phpinfo(). El mío era un problema de permisos debido selinux en una máquina de CentOS. Tuve que cambiar la propiedad y los permisos, y ahora está funcionando como se esperaba.

-2

establecer la ruta de PHP en las variables de entorno como se indica a continuación. Haga clic derecho en "Mi PC" Propiedades ficha Avanzado> Variables de entorno variables de sistema bajo, desplácese hacia abajo para encontrar "Camino", seleccione y haga clic en Editar. Agregue la ruta a su instalación de php al final (asegúrese de preceder con el punto y coma ";"). Ejemplo: "; C: \ php7" Haga clic en Aceptar.

+0

Esto no parece responder a la pregunta original. – chrisis

Cuestiones relacionadas