No se puede cargar /etc/httpd/modules/mod_auth_basic.so

No se puede cargar /etc/httpd/modules/mod_auth_basic.so

Después de intentar actualizar Apache 2.2.3 a 2.4.7 compilando 2.4.7 desde cero. Recibo el siguiente error,

[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]

Sin embargo, el archivo está ahí,

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

Mi configuración original para 2.2.3 estaba en /etc/httpd y los comandos que ejecuté para compilar fueron:

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

Algunas ideas ?

Respuesta1

ap_expr_str_execes una función API que fuerecién introducidoen el núcleo Apache httpd 2.4. El error es que su vinculador de tiempo de ejecución se queja de que el módulo mod_auth_basic.so necesita resolver el ap_expr_str_execsímbolo, pero no se encontró.

Puede verificar esto con la salida del comando readelf:

$ 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
   ...

El valor UND para el índice de símbolo significa que no está definido y, por lo tanto, debe resolverse en tiempo de ejecución.

Entonces, dado que su módulo hace referencia a un símbolo 2.4 pero su ejecutable en ejecución no lo tiene, parece que intenta cargar un módulo httpd 2.4 en una instancia httpd 2.2. Asegúrate de estar ejecutando definitivamente el binario httpd correcto.

información relacionada