PHP_AUTH_USER未设置?

时间:2010-09-07 23:37:36

标签: php http-authentication

出于某种原因,

中没有任何代码
if (isset($_SERVER['PHP_AUTH_USER']) &&
    isset($_SERVER['PHP_AUTH_PW']))

{



// When the above is set, the code that is here will execute of course

}

正在为我执行。当我输入正确的用户名和密码时,会再次弹出授权提示框。如果两个字段都正确并且我按下输入,那么这两个字段都不会被设置吗?但由于某些原因并非如此。我能做错什么? 谢谢。

8 个答案:

答案 0 :(得分:64)

在CGI模式PHP中使用HTTP Basic Auth有一种“合理的方式”:在.htaccess中使用

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

并在PHP中使用

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = 
  explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

答案 1 :(得分:20)

试试这个

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

在您的.htaccess文件中,您必须将其放入根目录

然后

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

在你的php脚本的开头

答案 2 :(得分:10)

我在Ubuntu 14.04上使用Symfony 2.5.7在PHP-PFM + Apache 2.4上运行。 BASIC_AUTH也工作我还需要通过添加:

来正确配置Apache VirtualHost

SetEnvIf授权&#34;(。*)&#34; HTTP_AUTHORIZATION = $ 1

这里也提到https://stackoverflow.com/a/17490827/435956

答案 3 :(得分:3)

在我的phpinfo()中,服务器API是CGI / Fast CGI。所以我已经通过在.htaccess文件中编写以下内容解决了我的问题 RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L]

答案 4 :(得分:2)

试试$_SERVER['REMOTE_USER']。这适用于PHP 5.3 CGI + Apache安装。

答案 5 :(得分:2)

如果授予用户访问权限,请在URL中提供用户名/密码,请检查是否

AuthType Digest

在您的VHost /目录/ .htaccess配置中有权使用。

这为我的用例修正了它。

答案 6 :(得分:0)

从 Apache 2.4.13 开始,您只需要在 .htaccess 中使用 CGIPassAuth 指令:

CGIPassAuth On

答案 7 :(得分:-3)

在我的主机服务器上,使用$_SERVER['REDIRECT_REMOTE_USER']代替$_SERVER['PHP_AUTH_USER']