【问题标题】:Cannot access PHP Basic Authentication variables无法访问 PHP 基本身份验证变量
【发布时间】:2018-12-04 20:10:35
【问题描述】:

我在here 发布了这个问题,也许管理员没有正确理解它并将其标记为重复,所以我再次发布它,因为我无法访问here 定义的这些变量。所谓的重复问题对我的查询没有帮助。在我的情况下,当我调用 PHP_AUTH_USERPHP_AUTH_PWAUTH_TYPE 时,它们是空的,null。有人可以帮我理解为什么吗?我的 .htaccess 文件:

AuthType Basic

AuthName "You need to login to access this page."
AuthUserFile /usr/local/..../.htpasswd
Require valid-user

RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

当我在我的 PHP 代码中执行 var_dump($_SERVER); 时,我看到没有设置这些变量,这是为什么呢?如果仅与 .htaccess 和 .htpasswd 文件一起使用基本 HTTP 身份验证,是否无法访问这些变量?

【问题讨论】:

  • 设置了$_SERVER['HTTP_AUTHORIZATION']$_SERVER['REWRITE_HTTP_AUTHORIZATION'] 吗?
  • @Evert 嗨,感谢您查看我的问题。也没有这些变量是净设置的。
  • 我认为这是因为我的服务器设置了 CGI。我找到了一些解决方法,但它们也不起作用......

标签: php .htaccess http


【解决方案1】:

答案是:PHP 没有获得 AUTH 变量,因为 Apache 没有将它们发送给 PHP 解释器。为什么?

这部分适用于 PHP-CGI:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

只有当

Apache 不会将其传递给 CGI 应用程序,除非您使用 SECURITY_HOLE_PASS_AUTHORIZATION 标志。 How can I use Basic HTTP Authentication in PHP?

您应该在 .htaccess 文件中禁用基本身份验证并在 PHP 中使用它。 手动:http://php.net/manual/en/features.http-auth.php

【讨论】:

    猜你喜欢
    • 2010-11-10
    • 2014-09-27
    • 2011-09-10
    • 2013-05-30
    • 2014-12-17
    • 2012-09-08
    • 1970-01-01
    • 2021-01-28
    • 2015-07-22
    相关资源
    最近更新 更多