我如何知道哪些 Apache 模块可供我使用?

我如何知道哪些 Apache 模块可供我使用?

我目前正在阅读《Apache mod_rewrite 权威指南》,全书中提到了其他 Apache 模块,它们在特定场景中是更好的替代方案。

这让我很疑惑我的网站上都安装了些什么。我没有服务器的 SSH 访问权限,也没有访问任何配置文件的权限(据我所知)。

有什么方法可以让我确定安装了什么吗?还是我必须直接询问主机?我猜某些命令可以在 PHP 内部运行(即使用反引号),但我不确定这样做有什么限制。

答案1

有一种外部方法,但需要知道它是否已打开,以及是否已安装。

phpinfo()函数可能会告诉你一些关于 Apache 的信息,但它主要与 PHP 有关。如果你可以通过 Web 服务器运行命令,那么运行

httpd -t -D DUMP_MODULES

可能会有用,但我不会依赖它。

此外,即使某些模块当前未使用,也可能会在服务器响应中包含数据。请参阅http://www.netcraft.com/whats举个例子。我的服务器目前报告:

Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.9-dev DAV/2 PHP/5.2.11 Phusion_Passenger/2.2.9

这似乎是准确的,这让我想起,我需要删除 PHP 部分。

答案2

您有权访问 吗.htaccess?我认为可以,否则您无法控制网络服务器,也无法用它做任何事情,所以知道您拥有哪些模块也没有意义。

如果是这样,您可以<IfModule>在文件中添加各种指令.htaccess来执行某些操作(例如拒绝访问某个文件)。然后您可以尝试访问该文件。如果您可以访问该文件,则说明您没有可用的模块。

答案3

这不是一个程序性的答案。

如果可以,请直接询问主机管理员。

您可以尝试要求管理员激活 mod_info apache 模块并配置主 httpd.conf 服务器文件(并指向受限的 URI 以确保安全),以便您可以使用 Web 浏览器轻松获取完整的配置信息。

您可以要求主机管理员运行另一个用户上面提供的 httpd 命令并将输出发送给您。

相关内容