2011-05-17 19:55:14 +0000 2011-05-17 19:55:14 +0000
393
393

如何检查哪些apache模块被启用/安装?

哪种检查apache模块被启用的方法最优雅?

答案 (11)

483
483
483
2011-05-17 20:01:43 +0000

你在Ubuntu上,所以试试:

apache2ctl -M
120
120
120
2011-05-17 19:56:42 +0000

httpd -M会告诉你哪些模块是内置或共享的。

37
37
37
2012-04-11 09:10:50 +0000

如果你不能在远程服务器上运行命令,上面的答案都是行不通的。如果你只有 “用户 "权限或根本没有权限,可以尝试创建test.php脚本:

<pre>
<?php
print_r(apache_get_modules());
?>
</pre>

&001

虽然只有在PHP安装为mod_php的情况下才会起作用。

28
28
28
2015-05-04 11:33:10 +0000

也许这对一些共享主机上的人来说会有帮助,httpdapachectl或进程:

已启用模块:ls /etc/apache2/mods-enabled/

可用模块:ls /etc/apache2/mods-available/

18
18
18
2013-02-06 07:04:37 +0000

你也可以使用 apachectl

apachectl -t -D DUMP_MODULES
14
14
14
2011-05-17 20:57:05 +0000

我觉得这里其实有三个问题。我不确定你问的是哪一个。

  • 你的磁盘上有哪些模块。

  • 你可以使用的模块都有哪些。

这可以在你apache发行版的模块目录下,通常是/etc/httpd/modules/

  • 任何特定的实例都配置了哪些模块。如果你想检查一个特定的配置文件 /usr/sbin/httpd -M -f /path/to/config/file

  • 运行中的apache里有什么东西

要得到很多信息,你可以用http://machinename/server-info/ 查看,这不是默认配置的,你必须configure。如果你在机器上,并且你有权限成为运行中的用户,你也可以通过检查进程来查看加载的内容。你可以通过:

ps -ef | gawk '/httpd/ && $3 == 1{print $2}'

找到父进程,然后查看

cat /proc/PID_FROM_ABOVE/maps
11
11
11
2014-03-11 18:41:39 +0000

如果你是在Redhat/CentOS上,那么

httpd -M

这意味着你需要使用

/usr/sbin/httpd -M

然而,

我可以确认在CentOS 5.8上,实际路径是httpd less /init.d/httpd

但如果不是这个路径,你可以发现它。我是这样做的。

首先,我检查了用于控制它的守护进程。希望对你有帮助。

5
5
5
2016-08-30 12:23:45 +0000

列出所有启用的模块

a2query -m
3
3
3
2014-05-21 22:35:14 +0000

在我的gentoo上,我可以执行apache2ctl modules,并且可以看到模块列表。

2
2
2
2016-04-11 17:36:03 +0000

从 php 脚本中检查 (对于 mod\xsendfile):

if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
  && in_array('mod_xsendfile', apache_get_modules()))
  \doSomething();

PHP\SAPI 的检查是为了排除php作为 CGI 运行时的检查,因为 apache\_get_modules() 在那个上下文中不起作用。此外,如果在php<5.0.0.0的环境下运行,只有在apache2handler上下文中才会产生预期的结果。

1
1
1
2018-07-19 16:20:26 +0000

我创建了一个小的python脚本来帮助你。请看一下 https://github.com/zioalex/unused_apache\modules

这是你可以期待的:

curl http://localhost/server-info > http_modules_test.txt
cat http_modules_test.txt| python find_unused_apache_mod.py

1
Module name mod_python.c
Configuration Phase Participation: 4
Request Phase Participation: 11
Current Configuration: 3

2
Module name mod_version.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 1

3
Module name mod_proxy_connect.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 0

To remove safely:
 ['mod_proxy_connect.c']
POPPED: mod_proxy_connect.c

To KEEP: ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']