我已将此问题发布到here,也许管理员不能正确理解它并将其标记为重复,所以我再次发布它,因为我无法访问定义的here这些变量。所谓的重复问题对我的查询没有帮助。就我而言,当我呼叫PHP_AUTH_USER
,PHP_AUTH_PW
和AUTH_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身份验证,是否无法访问这些变量?
答案 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