#1 楼
您在Ubuntu上,请尝试:apache2ctl -M
#2 楼
httpd -M
会告诉您内置或共享的模块。评论
嗯...以root身份启动httpd -M时出现“ bash:httpd:找不到命令”
–udo
2011年5月17日19:58
因此,请指定httpd可执行文件的完整路径。
–伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams)
2011年5月17日19:59
@ IgnacioVazquez-Abrams:在Ubuntu(和其他基于Debian的发行版)上,名称是apache2而不是httpd,这就是为什么找不到它的原因。
–丹尼尔·安德森(Daniel Andersson)
2012年4月11日,9:13
Apache在redhat上为httpd。如果这个答案不适合您,请尝试其他答案之一。
– Jacks_Gulch
2013年1月14日15:46
CentOS也使用httpd代替apache2
–pedromanoel
2014年9月5日在13:22
#3 楼
如果您无法在远程服务器上运行命令,则以上答案均无济于事。如果您只有“用户”特权或根本没有特权,请尝试创建test.php
脚本:<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
尽管只有将PHP安装为
mod_php
才能工作。评论
另外,您将不想让它公开显示。可能希望将该结果限制为具有管理员IP的客户端。完成后,您将希望删除该脚本。因为纵深防御;不要让它变得比需要的容易。
–Parthian Shot
15年7月15日在20:20
#4 楼
也许这对无法访问httpd
,apachectl
或进程的共享主机上的某些人有所帮助:已启用的模块:
ls /etc/apache2/mods-enabled/
可用模块:
ls /etc/apache2/mods-available/
#5 楼
您也可以使用apachectlapachectl -t -D DUMP_MODULES
#6 楼
我认为这里实际上有三个问题。我不确定您要问哪个。磁盘上有哪些模块。您可以使用哪些模块?
(通常)在您的apache发行版的modules目录中,通常是/ etc / httpd / modules /
什么模块是配置为运行的任何特定实例。
至少对于基本系统apache而言,可以使用/ usr / sbin / httpd -M进行检查。如果要检查特定的配置文件/ usr / sbin / httpd -M -f / path / to / config / file
正在运行的apache中有什么
要获取大量信息,可以使用http:// machinename / server-info /
进行查看。默认情况下,此配置未配置,您必须对其进行配置。信息泄漏,因此请对其进行配置,以便只有本地人才能看到它。
如果您在计算机上并且可以成为运行用户,则还可以通过检查过程来查看加载的内容。您可以使用以下命令找到父进程:
ps -ef | gawk '/httpd/ && == 1{print }'
然后签出
cat /proc/PID_FROM_ABOVE/maps
评论
有用的信息,但是因为OP使用的是Ubuntu,所以文件名和位置是不同的-例如:/ usr / sbin / apache2而不是httpd,以及ps -ef | gawk'/ apache2 / && $ 3 == 1 {print $ 2}'模块的位置以不同的方式处理,使用mods可用和启用了mods的子文件夹
– Linker3000
2011年5月17日在21:40
谢谢@ Linker3000 ...没错,这是针对RedHat / Centos的,我将在如何转换为Ubuntu方面发表您的评论。
– Rich Homolka
2011年5月20日在17:03
#7 楼
如果您在Redhat / CentOS上,则使用httpd
代替apache2ctl
。这意味着您需要使用
httpd -M
,但是,
httpd
几乎不会出现在您期望的路径中。我可以在CentOS 5.8上确认实际路径是
/usr/sbin/httpd
。/usr/sbin/httpd -M
但是如果那样不是路径,您可以发现它。
首先,我检查了用于控制它的守护程序。
less /init.d/httpd
第40行左右
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
告诉我确切的位置。希望这会有所帮助。
#8 楼
列出所有启用的模块a2query -m
#9 楼
在我的gentoo上,我可以执行apache2ctl modules
并查看列出的模块。#10 楼
从php脚本中进行检查(针对mod_xsendfile):上下文。此外,如果在php <5.0.0上运行,则仅apache2handler
上下文会产生预期的结果。#11 楼
我创建了一个小的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']
评论
apache2ctl -M效果很好
–udo
2011年5月17日在20:06
apache2 -M导致此错误apache2:用户名错误$ {APACHE_RUN_USER}
–udo
2011年5月17日20:07
足够公平-这是由于您没有以apache配置中定义的apache运行时用户(可能是www-data)的身份运行命令。有一种方法可以解决此问题,但您最好还是坚持使用apache2ctl。
– Linker3000
2011年5月17日在20:23
须藤apache2ctl -M |分类
–mmdemirbas
2012年7月6日13:30
请注意,apache2ctl有许多有用的选项(标志),但它们均未在手册页或apache2ctl --help中列出。那是因为它们被传递到httpd。它们仅在httpd文档中列出。
– Lutz Prechelt
2014-09-27 9:55