如何在 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 的支持的主要内容,如果未能解决你的问题,请参考以下文章

Apache 不会在 xampp 上启动:“Apache 服务检测到错误的路径”

Apache 服务检测到错误的路径

Linux如何查询哪些端口被占用

Linux如何查询哪些端口被占用

Linux如何查询哪些端口被占用

Linux如何查询哪些端口被占用