2011-12-06 18 views
6

Estoy tratando de instalar freetds y php-mssql en un cuadro RHEL5. He hecho con éxito (lo que parece ser) todo. Sin embargo, me sale el siguiente error cuando PHP intenta cargar el módulo:Módulo PHP con API compilada incorrecta (no se puede inicializar)

PHP Warning: PHP Startup: mssql: Unable to initialize module 
Module compiled with module API=20090626, debug=0, thread-safety=0 
PHP compiled with module API=20050922, debug=0, thread-safety=0 
These options need to match 

que he estado tomando el cerebro tratando de averiguar por qué son diferentes valores, pero sin tener éxito.

En el último intento, descargué la fuente de php para la versión que estoy ejecutando (php-5.3.8), fui a la carpeta ext/mssql y ejecuté phpize, configure, make, make install.

Comprobé que el archivo mssql.so está en la carpeta correspondiente y que php está intentando cargarlo.

phpize -v 
Configuring for: 
PHP Api Version:   20050922 
Zend Module Api No:  20090626 
Zend Extension Api No: 220090626 

Respuesta

11

RHEL tenían una versión anterior de PHP (5.1.x), y la instalación de las versiones más recientes (php como 5.3.x) significa varios cambios. Si instala desde repositorios no oficiales, verá paquetes llamados php- * y php5- *. Tener ambas versiones puede ser el origen de los problemas.

Parece que su sistema está accediendo a algunos archivos de configuración de instalaciones anteriores de php.

Tenga una mirada en: - /etc/php.d Asegúrese de que no tiene elementos de las versiones antiguas - Tener un vistazo a/usr/bin/php-config *, Si tiene tanto php-config y php-config5, eliminar (renombrar) de/usr/bin/php-config y crea un enlace a la nueva:

# mv /usr/bin/php-config /usr/bin/php-config_old 
# ln -s /usr/bin/php-config5 /usr/bin/php-config 

esperanza esto ayuda

+0

Gracias. Estaba empezando a teorizar que puede haber dos versiones de php instaladas. Noté que php-config dice version = "5.1.6", pero php -v muestra la versión como 5.3.8. No existe ningún archivo php-config5. –

+0

¿Dónde puedo encontrar la versión más reciente de php-config si no existe en/usr/bin? ¿Tendría que hacer una nueva instalación de php 5.3.8 (que es lo que está ejecutando php) para copiar sobre php-config? –

+1

Muchas gracias, esto me estaba dando dolores de cabeza. Estaba intentando configurar Memcached en osx, pero seguí teniendo este problema. Eventualmente utilicé pecl para instalar 'pecl install memcached' una vez que había corregido las versiones de php, phpize y php-config de las proporcionadas por MAMP – jackofallcode

1

puedo confirmar que cuando un módulo doesn' t carga debido a una API diferente es debido a una vieja configuración php. Luego debe buscar en/usr/bin/php-config y sobrescribirlo con una versión más nueva.

+0

Gracias David. ¿Tiene alguna sugerencia sobre cómo proceder (en referencia a los comentarios sobre la respuesta anterior a la izquierda) –

+0

@AndrewVogel: He encontrado una nueva php-config en la carpeta php, pero he instalado php en un archivo tar. Creo que el viejo php-config es de una instalación remota como apt-get. Tengo el mismo problema con eaccelarator. ¿Es eso lo que quieres decir? – Bytemain

+0

Sí ... ¿qué carpeta tenía la nueva php-config? ¿O eso estaba en su carpeta/usr/bin como se indica en jap1968? Si no tengo un php-config más nuevo en alguna parte, supongo que mi única opción sería hacer una nueva instalación de php? –

Cuestiones relacionadas