基本身份验证在localhost中有效,但在生产服务器中失败


Basic Authentication works in localhost but fails in Production Server

我在PHP、中有以下代码

<?php
ob_start();
$valid_passwords = array ("matrixUlt" => "$ecurEh1FIVE");
$valid_users = array_keys($valid_passwords);
$user = $pass = null;
if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
{
    $user = $_SERVER['PHP_AUTH_USER'];
    $pass = $_SERVER['PHP_AUTH_PW'];
}
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if(!$validated)
{
header('WWW-Authenticate: Basic realm="You need to be authenticated to access the resource!"');
header('HTTP/1.0 401 Unauthorized');
exit("Not authorized");
echo ob_get_clean();
}

当给出[("matrixUlt"=>"$ecurEH15VE"]用户名:密码时,这在localhost中正常工作。但在LIVE服务器/生产环境中不断显示身份验证对话框。有什么想法吗?

很抱歉弄得一团糟&困惑,我正在生产中运行CGI/FastCGI。因此,在运行此FastCGI 的PHP中使用HTTP AUTHENTICATION是不可能的

StackOverflow的回答给了我提示https://stackoverflow.com/a/7053320/1786360;我在php手册中没有注意到这件事,因为那里缺少它。

检查您的服务器集PHP_AUTH_USER和PHP_AUTH_PW如果没有,对话会一直要求要解决这个问题,你需要在.htaccess 中添加以下代码

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 

希望它能解决你的问题。