编译的步骤如下:
cd /usr/local/src/httpd-2.2.24/modules/generators/
/usr/local/apache2/bin/apxs -i -a -c -n mod_status mod_status.c
编译完成后, vim /usr/local/apache2/conf/httpd.conf 中查看已经自动添加了一行:
LoadModule mod_status_module modules/mod_status.so
但是,使用命令查看加载模块时报错啦:
/usr/local/apache2/bin/httpd -M
httpd: Syntax error on line 59 of /usr/local/apache2/conf/httpd.conf: Can't locate API module structure `mod_status_module' in file /usr/local/apache2/modules/mod_status.so: /usr/local/apache2/modules/mod_status.so: undefined symbol: mod_status_module
这是因为,我们使用的模块名不合适,不应该是 mod_status_module 而是 status_module
所以,需要更改httpd.conf 改为LoadModule status_module modules/mod_status.so
另一种办法是,在编译扩展模块时这样指定模块名:
/usr/local/apache2/bin/apxs -i -a -c -n status mod_status.c
然后,在httpd.conf中修改后,再次运行/usr/local/apache2/bin/httpd -M 依然有错误: httpd: Syntax error on line 59 of /usr/local/apache2/conf/httpd.conf: module status_module is built-in and can't be loaded
这是因为apache已经静态编译过该模块了!注释掉该行,然后再次运行 /usr/local/apache2/bin/httpd -M
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
so_module (static)
deflate_module (shared)
expires_module (shared)
rewrite_module (shared)
php5_module (shared)
cd /usr/local/src/httpd-2.2.24/modules/generators/
/usr/local/apache2/bin/apxs -i -a -c -n mod_status mod_status.c
编译完成后, vim /usr/local/apache2/conf/httpd.conf 中查看已经自动添加了一行:
LoadModule mod_status_module modules/mod_status.so
但是,使用命令查看加载模块时报错啦:
/usr/local/apache2/bin/httpd -M
httpd: Syntax error on line 59 of /usr/local/apache2/conf/httpd.conf: Can't locate API module structure `mod_status_module' in file /usr/local/apache2/modules/mod_status.so: /usr/local/apache2/modules/mod_status.so: undefined symbol: mod_status_module
这是因为,我们使用的模块名不合适,不应该是 mod_status_module 而是 status_module
所以,需要更改httpd.conf 改为LoadModule status_module modules/mod_status.so
另一种办法是,在编译扩展模块时这样指定模块名:
/usr/local/apache2/bin/apxs -i -a -c -n status mod_status.c
然后,在httpd.conf中修改后,再次运行/usr/local/apache2/bin/httpd -M 依然有错误: httpd: Syntax error on line 59 of /usr/local/apache2/conf/httpd.conf: module status_module is built-in and can't be loaded
这是因为apache已经静态编译过该模块了!注释掉该行,然后再次运行 /usr/local/apache2/bin/httpd -M
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
so_module (static)
deflate_module (shared)
expires_module (shared)
rewrite_module (shared)
php5_module (shared)
编辑回复