我在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();
}
当这[[&#34; matrixUlt&#34; =&gt;&#34; $ ecurEh1FIVE&#34;]用户名:密码被给出时,这在localhost中正常工作。但是在LIVE服务器/生产环境中一直显示auth对话框任何想法为什么这不起作用?
答案 0 :(得分:1)
对不起整个混乱&amp;混乱,我在生产中运行CGI / FastCGI 。因此,在运行此FastCGI的PHP中无法使用HTTP AUTHENTICATION
这个StackOverflow回答给了我提示https://stackoverflow.com/a/7053320/1786360;我在PHP手册中没有注意到这个,因为它在那里缺失。
答案 1 :(得分:0)
检查您的服务器是否设置了PHP_AUTH_USER和PHP_AUTH_PW 如果没有,对话框将继续要求它 为了解决这个问题,您需要在.htaccess中添加以下代码
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
希望它能解决您的问题。