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
Minha configuração original para 2.2.3 estava em /etc/httpd e os comandos que executei para compilar foram,
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 ideia ?
Responder1
ap_expr_str_exec
é uma função da API que foirecém-introduzidono núcleo 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 ap_expr_str_exec
símbolo, mas 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 do símbolo significa que ele é indefinido e, portanto, deve ser resolvido em tempo de execução.
Portanto, como seu módulo faz referência a um símbolo 2.4, mas seu executável em execução não o possui, parece que você está tentando carregar um módulo httpd 2.4 em uma instância httpd 2.2. Certifique-se de estar executando o binário httpd correto.