/etc/httpd/modules/mod_auth_basic.so kann nicht geladen werden

/etc/httpd/modules/mod_auth_basic.so kann nicht geladen werden

Nach dem Versuch, Apache 2.2.3 auf 2.4.7 zu aktualisieren, indem ich 2.4.7 von Grund auf neu kompiliere, erhalte ich den folgenden Fehler:

[root@test httpd-2.4.7]# /etc/init.d/httpd start
Starting httpd: httpd: Syntax error on line 149 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_auth_basic.so into server: /etc/httpd/modules/mod_auth_basic.so: undefined symbol: ap_expr_str_exec
                                                           [FAILED]

Die Datei ist jedoch vorhanden.

/etc/httpd/modules/mod_auth_basic.so: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped

Meine ursprüngliche Konfiguration für 2.2.3 befand sich in /etc/httpd und die Befehle, die ich zum Kompilieren ausführte, waren:

cd apr-1.5.0/
./configure --prefix=/usr/local/apr-httpd/
make
make install

cd ../apr-util-1.5.3/
./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/
make
make install

cd ../pcre-8.32/
./configure --prefix=/usr/local/pcre-8.32
make
make install


cd ../httpd-2.4.7/
./configure --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/ --with-pcre=/usr/local/pcre-8.32/ --prefix=/etc/httpd
make 
make install

Irgendwelche Ideen ?

Antwort1

ap_expr_str_execist eine API-Funktion, dieneu eingeführtim Apache httpd 2.4-Kern. Der Fehler liegt darin, dass Ihr Laufzeitlinker sich beschwert, dass das Modul mod_auth_basic.so das ap_expr_str_execSymbol auflösen muss, es aber nicht gefunden wurde.

Sie können dies mit der Ausgabe des Befehls readelf überprüfen:

$ readelf -s modules/mod_auth_basic.so
   Num:    Value          Size Type    Bind   Vis      Ndx Name
   ...
     3: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND ap_expr_str_exec
   ...

Der UND-Wert für den Symbolindex bedeutet, dass dieser nicht definiert ist und daher zur Laufzeit aufgelöst werden muss.

Da Ihr Modul auf ein 2.4-Symbol verweist, Ihre laufende ausführbare Datei es aber nicht hat, sieht es so aus, als ob Sie versuchen, ein httpd 2.4-Modul in eine httpd 2.2-Instanz zu laden. Stellen Sie sicher, dass Sie definitiv die richtige httpd-Binärdatei ausführen.

verwandte Informationen