Answers:
您正在使用Ubuntu,请尝试:
apache2ctl -M
apache2: bad user name ${APACHE_RUN_USER}
sudo apache2ctl -M | sort
httpd -M
会告诉您哪些模块是内置的或共享的。
httpd
可执行文件的完整路径。
apache2
and not httpd
,这就是为什么找不到它的原因。
如果您无法在远程服务器上运行命令,则以上答案均无效。如果您只有“用户”特权或根本没有特权,请尝试创建test.php
脚本:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
虽然仅当PHP安装为时才可以使用mod_php
。
也许这将帮助一些人,没有访问共享的主机httpd
,apachectl
或过程:
启用的模块: ls /etc/apache2/mods-enabled/
可用模块: ls /etc/apache2/mods-available/
我认为这里实际上有三个问题。我不确定您要问哪个。
(通常)在您的Apache发行版的modules目录中,通常是/ etc / httpd / modules /
至少对于基本系统apache,可以使用/ usr / sbin / httpd -M进行检查。如果要检查特定的配置文件/ usr / sbin / httpd -M -f / path / to / config / file
要获取大量信息,您可以使用http:// machinename / server-info / 查看它。默认情况下未配置它,因此您必须对其进行配置。这有点信息泄漏,因此进行配置因此只有当地人可以看到。
如果您在计算机上并且可以成为运行用户,则还可以通过检查过程查看加载的内容。您可以通过以下方式找到父流程:
ps -ef | gawk '/httpd/ && $3 == 1{print $2}'
然后退房
cat /proc/PID_FROM_ABOVE/maps
如果您使用的是Redhat / CentOS,请httpd
使用代替apache2ctl
。
这意味着您需要使用
httpd -M
但是,httpd
几乎从来都不在您期望的道路上。
我可以在CentOS 5.8上确认实际路径是/usr/sbin/httpd
。
/usr/sbin/httpd -M
但是,如果这不是路径,那么您可以发现它。这就是我这样做的方式。
首先,我检查了用于控制它的守护程序。
less /init.d/httpd
绕线40ish
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd
哪个告诉了我确切的位置。希望这可以帮助。
在我的gentoo上,我可以执行apache2ctl modules
并查看列出的模块。
从php脚本中检查(对于mod_xsendfile):
if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
&& in_array('mod_xsendfile', apache_get_modules()))
\\doSomething();
当php以CGI运行时,对PHP_SAPI的检查将排除在外,因为apache_get_modules()在该上下文中不起作用。另外,如果在php <5.0.0上运行,则仅apache2handler
上下文会产生预期的结果。
我创建了一个小的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']