Comment puis-je forcer PHP à utiliser le libiconv version de iconv au lieu de CentOS-installé la version de la glibc?

Le code, je travaille sur fonctionne parfaitement sur Windows XP et Mac OS X. Lorsque les tests sur CentOS (et sur Fedora et Ubuntu), il ne fonctionne pas correctement. Recherche les filets m'a conduit à la conclusion que c'est la glibc version de la iconv qui cause le problème. Alors maintenant, j'ai besoin de la libiconv version de iconv pour Zend Lucene pour fonctionner correctement.

J'ai déjà téléchargé libiconv et configuré avec --prefix=/usr/local, make, puis make install sans erreurs. Il semble qu'il a été installé avec succès parce que l'exécution d' /usr/local/bin/iconv --version dit que la version est la libiconv. Bien qu'un simple iconv --version donne toujours l' glibc version.

Puis j'ai recompilé PHP à partir de la source à l'aide de --with-iconv=/usr/local. Mais encore, la phpinfo() est de montrer la iconv utilisé est le glibc version. J'ai aussi déjà essayé plusieurs autres compile en utilisant --with-iconv-dir ou à l'aide de /usr/local/bin/php.

Bien sûr, j'ai redémarré le serveur web après recompilation de PHP.

J'ai la ligne suivante dans mon /etc/httpd/conf/httpd.conf:

LoadModule /usr/lib/httpd/modules/libphp5.so

et libphp5.so est en fait dans /usr/lib/httpd/modules.

phpinfo() montre PHP 5.3.3. J'ai aussi yum retiré de la pré-installé PHP 5.1.* juste pour s'assurer. Mais la fonction iconv est encore en utilisant la version de la glibc.

ldd /usr/lib/httpd/modules/libphp5.so donne

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)

C'est un cross-post de: NullPointer.ph

ce n' ldd /usr/lib/httpd/modules/libphp5.so et ldd /usr/libexec/httpd/httpd spectacle? Autant que je sache, apache dépend libiconv. Vous ne pouvez pas charger les deux version de libiconv dans un processus.
Mise à jour de question pour refléter ldd /usr/lib/httpd/modules/libphp5.so. La deuxième commande me donne un No such file or directory.
essayez de configurer avec --with-iconv=shared,/usr/local
J'ai essayé celui-ci en tant que bien, mais ne fonctionne pas. Merci quand même.

OriginalL'auteur Randell | 2011-01-20