El código en el que estoy trabajando funciona perfectamente en Windows XP y en Mac OS X. Cuando se prueba en CentOS (y en Fedora y Ubuntu), no funciona correctamente. La búsqueda en las redes me llevó a la conclusión de que es la versión glibc
del iconv
la que está causando el problema. Así que ahora necesito la versión libiconv
de iconv
para que Zend Lucene funcione correctamente.¿Cómo puedo forzar a PHP a usar la versión libiconv de iconv en lugar de la versión glibc instalada en CentOS?
Ya descargué libiconv y lo configuré con --prefix=/usr/local
, make
, luego make install
sin ningún error. Parece que se instaló correctamente porque al ejecutar /usr/local/bin/iconv --version
dice que la versión es libiconv
. Aunque un simple iconv --version
todavía da la versión glibc
.
Luego recompuse PHP de la fuente usando --with-iconv=/usr/local
. Pero aún así, el phpinfo()
muestra que el iconv
que se está utilizando es la versión glibc
. También he probado otras compilaciones usando --with-iconv-dir
o usando /usr/local/bin/php
.
Por supuesto, reinicié el servidor web después de recompilar PHP.
que tienen la siguiente línea en mi /etc/httpd/conf/httpd.conf
:
LoadModule /usr/lib/httpd/modules/libphp5.so
y libphp5.so
está realmente en /usr/lib/httpd/modules
.
phpinfo()
muestra PHP 5.3.3. También eliminé el PHP 5.1 preinstalado * solo para asegurarme. Pero iconv todavía usa la versión glibc.
ldd /usr/lib/httpd/modules/libphp5.so
da
linux-gate.so.1 => (0x003b1000)
/usr/local/lib/preloadable_libiconv.so (0x00110000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x001ed000)
librt.so.1 => /lib/librt.so.1 (0x0021f000)
libmysqlclient.so.15 => /usr/lib/mysql/libmysqlclient.so.15 (0x003b2000)
libldap-2.3.so.0 => /usr/lib/libldap-2.3.so.0 (0x0026e000)
liblber-2.3.so.0 => /usr/lib/liblber-2.3.so.0 (0x00370000)
libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x00516000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x002a8000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00228000)
libz.so.1 => /usr/lib/libz.so.1 (0x00328000)
libcurl.so.3 => /usr/lib/libcurl.so.3 (0x00f23000)
libm.so.6 => /lib/libm.so.6 (0x0033b000)
libdl.so.2 => /lib/libdl.so.2 (0x00364000)
libnsl.so.1 => /lib/libnsl.so.1 (0x0037e000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00f5f000)
libssl.so.6 => /lib/libssl.so.6 (0x0862c000)
libcrypto.so.6 => /lib/libcrypto.so.6 (0x04145000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x08e2d000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x0611a000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x005f4000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x0024e000)
libidn.so.11 => /usr/lib/libidn.so.11 (0x071f5000)
libc.so.6 => /lib/libc.so.6 (0x08aa6000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00397000)
/lib/ld-linux.so.2 (0x00251000)
libresolv.so.2 => /lib/libresolv.so.2 (0x0748a000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x07ddf000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x062b7000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00369000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0913b000)
libsepol.so.1 => /lib/libsepol.so.1 (0x07eb4000)
Esta es una cruz-puesto de: NullPointer.ph
¿Qué muestra 'ldd/usr/lib/httpd/modules/libphp5.so' y' ldd/usr/libexec/httpd/httpd'? AFAIK, apache también depende de 'libiconv'. No puede cargar dos versiones de 'libiconv' en un proceso. –
Pregunta actualizada para reflejar 'ldd/usr/lib/httpd/modules/libphp5.so'. El segundo comando me da un 'No dicho archivo o directorio'. – Randell
intente configurar con '--with-iconv = shared,/usr/local' – ismail