![更新至 Apache 2.4 缺少模块?](https://linux22.com/image/583562/%E6%9B%B4%E6%96%B0%E8%87%B3%20Apache%202.4%20%E7%BC%BA%E5%B0%91%E6%A8%A1%E5%9D%97%EF%BC%9F.png)
我刚刚更新到 Apache 2.4,并且遇到了大量现在缺少的模块,大概是它们默认被设置为禁用。
我一直在寻找格式错误,Invalid command 'NAME', perhaps misspelled or defined by a module not included in the server configuration
然后用谷歌搜索提供该格式的内容并包括该模块。
然而下面的内容却让我困惑了,我错过了什么?
Stopping httpd: [FAILED]
Starting httpd: [Mon May 07 14:42:22.523264 2012] [core:warn] [pid 30648:tid 3082909440]
AH00117: Ignoring deprecated use of DefaultType in line 81 of /etc/httpd/conf/httpd.conf.
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/ips.conf:6
AH00526: Syntax error on line 27 of /etc/httpd/conf/extra/httpd-deflate.conf:
Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
我的 httpd.conf 顶部的模块部分
LoadModule authz_core_module /usr/lib/apache/mod_authz_core.so
LoadModule filter_module /usr/lib/apache/mod_filter.so
LoadModule mime_module /usr/lib/apache/mod_mime.so
LoadModule unixd_module /usr/lib/apache/mod_unixd.so
LoadModule authz_host_module /usr/lib/apache/mod_authz_host.so
LoadModule access_compat_module /usr/lib/apache/mod_access_compat.so
LoadModule env_module /usr/lib/apache/mod_env.so
LoadModule alias_module /usr/lib/apache/mod_alias.so
LoadModule negotiation_module /usr/lib/apache/mod_negotiation.so
LoadModule autoindex_module /usr/lib/apache/mod_autoindex.so
LoadModule log_config_module /usr/lib/apache/mod_log_config.so
LoadModule ssl_module /usr/lib/apache/mod_ssl.so
LoadModule auth_basic_module /usr/lib/apache/mod_auth_basic.so
LoadModule auth_digest_module /usr/lib/apache/mod_auth_digest.so
LoadModule authn_file_module /usr/lib/apache/mod_authn_file.so
LoadModule authz_user_module /usr/lib/apache/mod_authz_user.so
LoadModule dav_module /usr/lib/apache/mod_dav.so
LoadModule dav_fs_module /usr/lib/apache/mod_dav_fs.so
LoadModule dav_lock_module /usr/lib/apache/mod_dav_lock.so
谢谢你的时间!
答案1
您不能盲目地将 apache 2.2 配置文件与 apache 2.4 一起使用!
首先,模块名称已经改变,并且被添加/删除,另一方面,配置语法已经经历了一些(不兼容的)变化。
请参阅官方 2.4 文档。
还要注意,您必须重新安装/重建所有第三方模块,因为必须为将要使用的特定服务器构建 apache 模块(最值得注意的是,mod_php 需要一个新的包。)
关于 Header 指令的具体问题:
Loadmodule header_module /path/to/mod_header.so
答案2
从 FC 17 (httpd-2.2x) 升级到 FC 18 (httpd-2.4.3) 后,我遇到了同样的问题
我已经通过注释掉以下描述的所有不兼容的指令解决了这个问题: http://httpd.apache.org/docs/2.4/upgrading.html
我已将字符串添加到文件 /etc/httpd/conf/httpd.conf:
包括 conf.modules.d/*.conf
后
KeepAliveTimeout 5
和之前
<IfModule prefork.c>
此外,我还添加了指令:
<IfModule mod_unixd.c> 用户 apache Apache 组 </IfModule>
在所有注释的 # LoadModule 指令下