/etc/httpd/modules/mod_auth_basic.so를 로드할 수 없습니다.

/etc/httpd/modules/mod_auth_basic.so를 로드할 수 없습니다.

2.4.7을 처음부터 컴파일하여 Apache 2.2.3을 2.4.7로 업그레이드하려고 시도한 후. 다음과 같은 오류가 발생합니다.

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

그런데 파일이 있는데,

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

2.2.3의 원래 conf는 /etc/httpd에 있었고 컴파일하기 위해 실행한 명령은 다음과 같습니다.

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

어떤 아이디어가 있나요?

답변1

ap_expr_str_execAPI 함수입니다.새로 도입된Apache httpd 2.4 코어에서. 오류는 mod_auth_basic.so 모듈이 ap_expr_str_exec기호를 확인해야 하지만 찾을 수 없다고 불평하는 런타임 링커입니다.

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

기호 인덱스의 UND 값은 정의되지 않았으므로 런타임 시 해결되어야 함을 의미합니다.

따라서 모듈이 2.4 기호를 참조하지만 실행 중인 실행 파일에는 해당 기호가 없으므로 httpd 2.4 모듈을 httpd 2.2 인스턴스에 로드하려는 것처럼 보입니다. 올바른 httpd 바이너리를 실행하고 있는지 확인하세요.

관련 정보