Il y a quelques temps déjà que mon LFS tourne du feu de dieu, mais pour des besoins tout nouveaux, j'ai dû recompiler php. Il me manquait juste le support de snmp. Après installation de la libsnmp, j'ai donc repris le haut du fichier config.status à la racine du dossier contenant les sources de php, puis ajouté --with-snmp à la fin de la ligne, puis lancé le traditionnel make && make install.
Et là, ce fut le drame. J'ai en effet eu un message d'erreur lors de l'édition de lien finale, celle qui donne l'exécutable php et la libphp utilisée par apache.
Il y avait en effet une bonne chiée de messages concernant tout un tas de fonctions non déclarées (iconv_open et consors).
Constatant qu'il manquait en effet un -liconv dans le Makefile, je l'ai édité à la main et relancé le make && make install. Ce coup-ci, tout s'est bien passé, et l'installation s'est bien déroulée.
Or donc, comme le PC que j'utilise est un portable, il m'arrive de l'emporter avec moi, et c'est avec horreur que j'ai constaté lors du dernier boot qu'apache ne démarrait plus.
En substance, voici le message que cet ignoble indien me scande lorsque je tente de le démarrer :
httpd: Syntax error on line 105 of /etc/apache/httpd.conf: Cannot load /usr/lib/apache/libphp5.so into server: /usr/lib/apache/libphp5.so: undefined symbol: libiconv_open
Encore cette libiconv qui n'arrête pas de me faire ch****.
Comment puis-je contourner ça ?
libiconv est bien installé, comme le prouvent ces quelques lignes :
$ ll /usr/lib/libiconv.*
-rw-r--r-- 1 root root 783 2007-05-23 16:22 /usr/lib/libiconv.la
lrwxrwxrwx 1 root root 17 2007-05-23 16:22 /usr/lib/libiconv.so -> libiconv.so.2.4.0
lrwxrwxrwx 1 root root 17 2007-05-23 16:22 /usr/lib/libiconv.so.2 -> libiconv.so.2.4.0
-rw-r--r-- 1 root root 1200563 2007-05-23 16:22 /usr/lib/libiconv.so.2.4.0
$ ll /lib/libiconv.so*
lrwxrwxrwx 1 root root 26 2007-06-19 10:49 /lib/libiconv.so -> /usr/lib/libiconv.so.2.4.0
lrwxrwxrwx 1 root root 26 2007-06-19 10:49 /lib/libiconv.so.2 -> /usr/lib/libiconv.so.2.4.0
lrwxrwxrwx 1 root root 26 2007-06-19 10:49 /lib/libiconv.so.2.4.0 -> /usr/lib/libiconv.so.2.4.0
Comment puis-je éviter ce message et faire en sorte qu'apache démarre ?
Merci pour votre aide éclairée.
# Méthode bourrain
Posté par Ph Husson (site web personnel) . Évalué à 4.
dans les sources de php tu vire le fichier qui foire
tu fais make
et tu copie colle la commande qui sert à compiler le dit fichier
et tu rajoute les options qui vont bien au gcc ou au ld
donc ici -liconv
[^] # Re: Méthode bourrain
Posté par Gyro Gearllose . Évalué à 3.
Du coup, c'est bien la manip' que tu indiques que j'ai effectuée.
Non, là où le bat blesse, c'est que maintenant, si je comprends bien le cheminement, apache tente de charger libphp5.so, et cette dernière fait référence à libiconv.so (laquelle est à la fois dans /usr/lib et dans /lib !?), et apache se vautre comme une grosse loutre bourrée, ne sachant où trouver cette pauvre libiconv...
Ceci-dit, mon ld.so.conf est correct, et j'ai évidement lancé un ldconfig pour être sûr que le ld.so.cache soit à jour.
Enfin, j'ai essayé de chercher sur le grand ternet avec mon message d'erreur, mais tout ce que google m'a rapporté, c'est une page, en polonais (?) qui évoque un problème similaire avec libsablot, php, mysql, apache, etc. Et comme je ne comprends pas le polonais, je ne suis pas plus avancé.
Quoi qu'il en soit, merci quand même pour cette réponse rapide.
[^] # Re: Méthode bourrain
Posté par Ph Husson (site web personnel) . Évalué à 4.
2.Que dit ldd libphp5.so ?
[^] # Re: Méthode bourrain
Posté par Gyro Gearllose . Évalué à 3.
Je n'ai pas compris le pourquoi de l'erreur, mais ta question m'a aiguillé pour solutionner mon problème.
Un ldd liphph5.so m'a en effet révélé (comme tu t'y attendais, je suppose) qu'il n'y avait aucune référence à libiconv.so.
Je suis donc retourné dans les sources de php, et j'y ai trouvé deux versions de libphp5.so, portant la même date de création que celui présent dans /usr/lib/apache, mais ne comportant aucune référence à libiconv d'après le ldd lancé dessus.
J'ai donc supprimé uniquement les libphp5.* contenus à la racine de l'arborescence des sources, ainsi que ceux présents dans les sous-répertoire .libs et libs.
Puis, j'ai relancé un make, et par acquis de conscience, refait un ldd et là, sans aucune raison (enfin, je me comprends, hein ;-)), libiconv est bien présenté dans le résultat de ldd.
Ont un suivi un make install && /etc/rc.d/init.d/apache start et tout est rentré dans l'ordre.
Merci donc pour ton aide précieuse !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.