HTTP-аутентификация с PHP, работающим как FCGI - PullRequest
3 голосов
/ 25 октября 2011

Я не могу заставить базовую HTTP-аутентификацию работать на PHP, который установлен и работает как FCGI. Он отлично работает, когда PHP установлен как модуль.

Есть ли способ заставить его работать ???

Я использую PHP версии 5.2.6 в Ubuntu.

<?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']);
}  

Я попробовал

[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)));

но, похоже, он не работает.

Ответы [ 2 ]

4 голосов
/ 20 января 2016

Удалите ваш .htaccess и напишите новый с такой строкой:

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0

и ваш PHP будет работать нормально.

1 голос
/ 25 августа 2012

Вам необходимо вручную передать $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'] в PHP FCGI.Протокол CGI просто не поддерживает эти переменные.

Если вы все еще хотите их использовать, я нашел кое-что интересное (и подтверждающее то, что я только что сказал) на http://be2.php.net/manual/en/features.http-auth.php#108132

...