在 Apache 2.4 編譯 mod_evasive 時遇到以下錯誤:
mod_evasive20.c: In function ‘access_checker’:
mod_evasive20.c:142: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:146: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:158: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:165: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:180: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:187: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:208: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:212: warning: implicit declaration of function ‘getpid’
mod_evasive20.c:215: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:221: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:222: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:228: error: ‘conn_rec’ has no member named ‘remote_ip’
apxs:Error: Command failed with rc=65536
在 Google 找了一下,原因出在 Apache 2.4 的 remote_ip 改名為 client_ip,要成功安裝,可以將 mod_evasive20.c 內的 remote_ip 字串改為 client_ip,方法如下:
cp mod_evasive20.c mod_evasive24.c
sed s/remote_ip/client_ip/g -i mod_evasive24.c
然後用 apxs 編譯新的 mod_evasive24.c:
apxs -i -a -c mod_evasive24.c
CentOS7下,Server version: Apache/2.4.6 (CentOS),安装 2.9.1.有如下错误:
/usr/local/src/modsecurity-2.9.1/apache2′In file included from modsecurity.h:49:0,
from apache2_config.c:17:
msc_remote_rules.h:54:9: error: unknown type name 'apr_crypto_key_t'
apr_crypto_key_t **apr_key,
^
msc_remote_rules.h:55:9: error: unknown type name 'apr_crypto_t'
apr_crypto_t *f,
^
make[2]: *** [mod_security2_la-apache2_config.lo] Error 1
make[2]: Leaving directory
make[1]: *** [all] Error 2
make[1]: Leaving directory
/usr/local/src/modsecurity-2.9.1/apache2'
make: *** [all-recursive] Error 1
有什么建议吗?