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

使用PHP作为FCGI运行的HTTP身份验证,php,apache,fastcgi,Php,Apache,Fastcgi,我无法在PHP中使用基本的HTTP身份验证,PHP作为FCGI安装和工作。但是,当PHP作为模块安装时,它可以完美地工作 有什么办法可以让它工作吗 我正在ubuntu中运行PHP版本5.2.6 <?Php if ( !$_SERVER['PHP_AUTH_USER'] ) { $this->getResponse()->setHeader('WWW-Authenticate', 'Basic realm="Testing"'); $this->getR

我无法在PHP中使用基本的HTTP身份验证,PHP作为FCGI安装和工作。但是,当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']);
}  

但是它似乎不起作用。

您需要手动将
$\u服务器['PHP\u AUTH\u USER']
$\u服务器['PHP\u AUTH\u PW']
传递给PHP FCGI。CGI协议根本不支持这些变量


如果您仍然想使用这些,我在

上发现了一些有趣的东西(并确认了我刚才所说的内容),请删除您的.htaccess并用以下行编写一个新的:

setenif授权。+HTTP\u授权=$0


而且你的PHP会很好地工作。

FWIW,我最近也研究了同样的东西,但它似乎就是不起作用。不过,如果有人能在这里提出解决方案,我会很高兴。您的第一个代码片段看起来像是方法的一部分-但没有类?我只是将其添加为我的
.htaccess
中的第一行,并且它也起了作用。使用您的代码片段,我获得了基本的auth头。但不是像
PHP\u AUTH\u user
那样经过身份验证的用户。在我的QNAP NAS中,我还需要添加来自的PHP代码。所以变量$\u SERVER['REDIRECT\u HTTP\u AUTHORIZATION']是在我的例子中设置的,它似乎必须由您自己解析-使用PHP7.3.7 fcgiWorks非常有魅力,非常感谢!
[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)));