【发布时间】:2012-02-06 08:24:54
【问题描述】:
我想检查我的服务器中是否启用了 mod_headers 和 mod_expires 模块
有没有一种方法可以使用某些 php 函数列出 apache 启用/禁用的模块,就像我们使用 phpinfo(); 函数列出 php 信息一样?
【问题讨论】:
标签: apache apache-config mod-expires phpinfo mod-headers
我想检查我的服务器中是否启用了 mod_headers 和 mod_expires 模块
有没有一种方法可以使用某些 php 函数列出 apache 启用/禁用的模块,就像我们使用 phpinfo(); 函数列出 php 信息一样?
【问题讨论】:
标签: apache apache-config mod-expires phpinfo mod-headers
以上所有答案都是错误的。改为使用:
apachectl -t -D DUMP_MODULES
或
apachectl -M
【讨论】:
/usr/sbin/httpd -t -DUMP_MODULES 和 /usr/sbin/httpd -M
apachectl 是控制脚本,它也可以在 CentOS 中使用。
在 Debian 上:
user@machine:~$ /usr/sbin/apache2 -l
大多数 GNU/Linux 发行版:
user@machine:~$ /usr/sbin/httpd -l
Ubuntu:
user@machine:~$ ls /etc/apache2/mods-enabled
在 Mac OSX 上:
user@mymac:~$ httpd -l
在 Win 7(64 位)上:
C:\Users\myuser>"\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\httpd.exe" -l
在除 Windows 之外的所有终端窗口中尝试这些命令,Windows 将改为使用 CMD。
【讨论】:
user@machine:~$ apachectl -M
在 Ubuntu 上,您可以在此处查看启用的模块列表,
/etc/apache2/mods-enabled
【讨论】:
某些版本的 PHP/Apache 在“加载的模块”下的 phpinfo() 中显示所有加载的模块。
Speeve 的回答显示在模块中编译(我的系统上的 x6):
echo system('/usr/sbin/apache2 -l');
您还需要查看已启用的模块(对我来说是 x36):
echo system('ls /etc/apache2/mods-enabled/');
要获取禁用模块的列表,请运行此命令,然后划掉所有启用的模块:
echo system('ls /etc/apache2/mods-available/');
【讨论】:
mods-enabled 目录非常特定于 Debian 和 Ubuntu,其他发行版和操作系统处理模块的方式不同。