【问题标题】:How to detect support for .htaccess in PHP on Apache server (and other servers)如何在 Apache 服务器(和其他服务器)上检测 PHP 中对 .htaccess 的支持
【发布时间】:2011-06-30 20:15:56
【问题描述】:

出于安全原因,我需要检查客户端是否无法读取目录, Apache 服务器支持 .htaccess(在 apache 配置文件中没有 AllowOverride None)。这非常重要,因为我最近发现很多产品和框架都没有检查这一点(包括 Zend 和 Symphony)。有没有办法只使用 PHP 来检查这个?

顺便说一句,如果我错了,请纠正我,但似乎其他服务器(nginx 或 lighttpd)不支持.htaccess。在这些情况下,如何检查我的目录是否不被客户端读取?

【问题讨论】:

  • 所有的回答看起来都很有趣,但是......这到底是什么?!为什么没有简单的解决方案来询问 PHP 目录是否受到良好保护?!

标签: php apache .htaccess nginx lighttpd


【解决方案1】:

您可以在 htaccess 中使用SetEnvIf 来设置一个变量,然后在 PHP 中访问它。这将告诉您是否正在使用 htaccess(并且 SetEnvIf 模块正在运行)。但它不会告诉你更多信息——例如,它不会告诉你 mod_rewrite 是否可用。要知道哪些模块正在运行,您可以通过编程方式检查 phpinfo 的输出。

【讨论】:

    【解决方案2】:

    也许您可以上传具有此类内容的 .htaccess 文件:

    Options -Indexes
    

    到你的根目录,然后尝试访问有问题的目录, 如果它们不可访问,它可以工作。

    如果没有,您的房东应该能够轻松地帮助您解决这个问题 您所在的平台。

    【讨论】:

      【解决方案3】:

      您可以通过is_readable(".htaccess")查看文件。

      print_r(apache_get_modules()) 将显示已加载的 Apache 模块。

      【讨论】:

        猜你喜欢
        • 2021-07-11
        • 1970-01-01
        • 2011-05-22
        • 2014-01-18
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 2011-07-09
        • 2017-04-19
        相关资源
        最近更新 更多