目前我正在阅读“Apache mod_rewrite权威指南”,在本书中还有其他提到的Apache模块,在给定的情况下是更好的select。
这让我想知道我的网站上安装了什么。 我没有SSH访问服务器,我没有访问任何configuration文件(afaik)。
有没有什么办法可以确定安装的东西,还是直接询问我的主机? 我想某些命令可以在PHP中运行(即使用反引号),但我不确定这是什么限制。
有一个外部的方法,但是它需要知道它是否被打开,以及它是否被安装。
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部分。
你有权访问.htaccess
? 我会这样认为的,否则你不能控制networking服务器,你不能做任何事情,所以没有必要知道你有哪些模块。
如果是这样,你可以在.htaccess
文件中添加各种<IfModule>
指令来做某些事情(例如拒绝访问某个文件)。 然后您可以尝试访问该文件。 如果您可以访问该文件,那么您没有可用的模块。
这是一个不是程式化的答案。
如果可以,直接询问主机pipe理员。
您可以尝试让pipe理员激活mod_info apache模块并configuration主httpd.conf服务器文件(并指向受限制的URI以确保安全),以便您可以使用Web浏览器轻松获取完整的configuration信息。
您可以要求主机pipe理员运行上面提供的其他用户的httpd命令,并向您发送输出。