Não é possível carregar o /etc/httpd/modules/mod_auth_basic.so

1

Depois de tentar atualizar o apache 2.2.3 para 2.4.7 compilando o 2.4.7 do zero. Estou recebendo o seguinte erro,

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

No entanto, o arquivo está lá,

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

Meu conf original para 2.2.3 estava em / etc / httpd e os comandos que corri para compilar eram

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

Alguma idéia?

    
por rick3d 27.12.2013 / 00:00

1 resposta

4

ap_expr_str_exec é uma função da API que foi introduzida recentemente no núcleo do Apache httpd 2.4 . O erro é o seu vinculador de tempo de execução reclamando que o módulo mod_auth_basic.so precisa resolver o símbolo ap_expr_str_exec , mas ele não foi encontrado.

Você pode verificar isso com a saída do 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
   ...

O valor UND para o índice de símbolo significa que é indefinido e, portanto, deve ser resolvido em tempo de execução.

Portanto, como seu módulo está referenciando um símbolo 2.4, mas seu executável em execução não o possui, parece que está tentando carregar um módulo httpd 2.4 em uma instância do httpd 2.2. Certifique-se de que você esteja executando o binário httpd correto.

    
por 28.12.2013 / 07:46

Tags