使用 PHP 作为 FCGI 运行的 HTTP 身份验证

ro *_* ko 3 php apache fastcgi

我无法让基本的 HTTP 身份验证在安装并作为 FCGI 工作的 PHP 中工作。但是,当 PHP 作为模块安装时,它可以完美运行。

有什么办法可以让它工作吗???

我在 ubuntu 中运行 PHP 5.2.6 版。

<?Php 
if ( !$_SERVER['PHP_AUTH_USER'] ) {
    $this->getResponse()->setHeader('WWW-Authenticate',  'Basic realm="Testing"');
    $this->getResponse()->setBody('Unauthorized');
    $this->getResponse()->setHttpResponseCode(401);
} else { 
    var_dump($_SERVER['PHP_AUTH_USER']);
    var_dump($_SERVER['PHP_AUTH_PW']);
}  
Run Code Online (Sandbox Code Playgroud)

我确实尝试过

[Rewrite rule on .htaccess]
 RewriteEngine on
 RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

[user:pass on PHP-script]
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':',     base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6)));
Run Code Online (Sandbox Code Playgroud)

但它似乎没有工作。

Pet*_*oft 7

删除你的 .htaccess 并用这一行写一个新的:

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0

并且您的 PHP 将正常工作。

  • 对于我的 QNAP NAS,我还需要添加 /sf/answers/3723774561/ 中的 php 代码。因此,在我的情况下设置了变量 $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] ,它必须由您自己解析 - 使用 php 7.3.7 fcgi (2认同)