无法访问PHP基本身份验证变量

时间:2018-06-26 07:28:42

标签: php .htaccess http

我已将此问题发布到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身份验证,是否无法访问这些变量?

1 个答案:

答案 0 :(得分:0)

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

这部分适用于PHP-CGI:

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

只有

  

除非将Apache编译为Apache,否则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

相关问题