使用 PHP 的 HTTP 身份验证在服务器上不起作用

HTTP authentication with PHP not work on server

我使用 Runcloud 作为我的 VPS 控制面板。 那么我的环境是"NGINX + Apache2 Hybrid"

我使用这些代码在我的本地主机上进行身份验证,它有效。 但是当我将它部署(上传)到服务器时,它失败了。 我输入了正确的用户名和密码,它弹出 window 并让我再次输入 util 我单击 "Cancel" 按钮并转到失败页面。

如何调试(检查输入的用户名密码)?或者我需要给服务器添加设置。

<?php
$protect = true;
if($protect){
        $LoginSuccessful = false;

        if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){

            $Username = $_SERVER['PHP_AUTH_USER'];
            $Password = $_SERVER['PHP_AUTH_PW'];

            if ($Username == 'hello' && $Password == 'hello'){
                $LoginSuccessful = true;
            }
        }
        if (!$LoginSuccessful){

            header('WWW-Authenticate: Basic realm="Secret page"');
            header('HTTP/1.0 401 Unauthorized');

            print "Login failed!\n";
            die();
        }
    };
?>
<html code>

你有没有添加一些配置,比如

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

在 apache 中(不确定 nginx 中的等价物是什么) 尝试转储

$_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 并查看它们是否已设置。