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_exec
ist 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_exec
Symbol 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.