1 votes

Solaris 10, En essayant d'exécuter apache : ld.so.1 : httpd : fatal relocation error

J'essaie de reproduire une boîte de production dans mon laboratoire, j'ai installé apache et j'essaie d'utiliser la configuration copiée de l'environnement de production, les résultats sont l'erreur suivante qui apparaît :

[root@hnm]/usr/local/apache2/bin$./apachectl -k start -f /usr/local/apache2/conf/hdm /httpd.conf httpd : Erreur de syntaxe sur la ligne 939 de /usr/local/apache2/conf/hdm/httpd.conf : Erreur de syntaxe sur la ligne 29 de /usr/local/apache2/conf/hdm/modules.conf : Impossible de charger /usr/local/apache2/modules /mod_cwmp_22.so dans le serveur : ld.so.1 : httpd : fatal : relocation error : file /usr/local/apache2 /modules/mod_cwmp_22.so : symbole curl_easy_init : symbole référencé non trouvé

2voto

Lark Points 1640

Décomposons votre message d'erreur :

Impossible de charger /usr/local/apache2/modules /mod_cwmp_22.so dans le serveur :

C'est évident.

ld.so.1 : httpd : fatal : relocation error :

ld.so.1 est le chargeur dynamique d'exécution. Lorsque vous démarrez une application liée dynamiquement (et sous Solaris, TOUT est lié dynamiquement), le chargeur dynamique doit apporter toutes les bibliothèques. Il doit également s'assurer non seulement qu'il dispose de tous les fichiers, mais aussi qu'il lie toutes les références, qu'il s'agisse de code ou de données.

fichier /usr/local/apache2 /modules/mod_cwmp_22.so : symbole curl_easy_init : symbole référencé non trouvé

Maintenant, nous y voilà. Le chargeur dynamique a apporté le module cwmp, qui dépend de curl (libcurl). Il semble avoir trouvé libcurl.so (sinon vous auriez vu une erreur différente) mais il ne peut pas trouver le symbole spécifique. Autrement dit, il sait que le module cwmp a besoin de l'appel de fonction curl_easy_init, mais il ne le trouve pas.

A mon avis, vous avez une erreur de version de libcurl. Le module serveur web a été construit avec une version de libcurl, mais maintenant vous essayez de l'exécuter avec une version différente sur votre machine de développement.

Je vérifierai les versions de libcurl, peut-être en faisant un strings -a sur libcurl à la fois sur dev et prod, assurez-vous qu'ils correspondent. Il existe d'autres outils comme readelf que vous pouvez utiliser pour les vérifier, mais je pense que vous pouvez copier la libcurl de prod et la placer quelque part dans dev où vous pouvez la voir.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X