PHP_AUTH_USER未设置?

由于某种原因,内部没有任何代码

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 } 

正在为我执行。 当我input正确的用户名和密码时,再次popup授权提示框。 如果这两个字段是正确的,那么这两个字段都不会被设置? 但由于某种原因,情况并非如此。 我能做什么错了? 谢谢。

在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))); 

尝试这个

 <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脚本的开始

我在Ubuntu 14.04下使用了PHP-PFM + Apache 2.4下的Symfony 2.5.7,并且要使BASIC_AUTH正常工作,我还需要通过添加以下内容来正确configurationApache VirtualHost:

SetEnvIf Authorization“(。*)”HTTP_AUTHORIZATION = $ 1

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

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

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

 AuthType Digest 

有权在您的VHost / Directory / .htaccessconfiguration。

这固定了我的用例。

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

在主机的服务器上,使用$_SERVER['REDIRECT_REMOTE_USER']而不是$_SERVER['PHP_AUTH_USER']