如何在 Apache 服务器(和其他服务器)上检测 PHP 中对 .htaccess 的支持
Posted
技术标签:
【中文标题】如何在 Apache 服务器(和其他服务器)上检测 PHP 中对 .htaccess 的支持【英文标题】:How to detect support for .htaccess in PHP on Apache server (and other servers) 【发布时间】:2011-06-30 20:15:56 【问题描述】:出于安全原因,我需要检查客户端是否无法读取目录,即 Apache 服务器支持 .htaccess
(在 apache 配置文件中没有 AllowOverride None
)。这非常重要,因为我最近发现很多产品和框架都没有检查这一点(包括 Zend 和 Symphony)。有没有办法只使用 php 来检查这个?
顺便说一句,如果我错了,请纠正我,但似乎其他服务器(nginx 或 lighttpd)不支持.htaccess
。在这些情况下,如何检查我的目录是否不被客户端读取?
【问题讨论】:
所有的回答看起来都很有趣,但是......这到底是什么?!为什么没有简单的解决方案来询问 PHP 目录是否受到良好保护?! 【参考方案1】:您可以在 htaccess 中使用SetEnvIf 来设置一个变量,然后在 PHP 中访问它。这将告诉您是否正在使用 htaccess(并且 SetEnvIf 模块正在运行)。但它不会告诉你更多信息——例如,它不会告诉你 mod_rewrite 是否可用。要知道哪些模块正在运行,您可以通过编程方式检查 phpinfo 的输出。
【讨论】:
【参考方案2】:也许您可以上传具有此类内容的 .htaccess 文件:
Options -Indexes
到你的根目录,然后尝试访问有问题的目录, 如果它们不可访问,它可以工作。
如果没有,您的房东应该能够轻松地帮助您解决这个问题 您所在的平台。
【讨论】:
【参考方案3】:您可以通过is_readable(".htaccess")
查看文件。
print_r(apache_get_modules())
将显示已加载的 Apache 模块。
【讨论】:
以上是关于如何在 Apache 服务器(和其他服务器)上检测 PHP 中对 .htaccess 的支持的主要内容,如果未能解决你的问题,请参考以下文章