2011-10-25 7 views
1

FCGIとしてインストールされて動作するPHPで動作する基本HTTP認証を取得できません。 PHPがモジュールとしてインストールされている場合、これは完璧に動作します。PHPをFCGIとして実行するHTTP認証

私はそれを動作させることができる方法はありますか?

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

私は

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

を試してみましたが、それは働いているように見えるdoes notの。

+0

FWIW、私は最近同じことを研究していて、うまくいかないようです。誰かがここで解決策を取り戻すことができれば、私はそれが大好きです。 – deceze

+0

最初のコードフラグメントはメソッドの一部のように見えますが、クラスはありません。 – symcbean

答えて

0

PHP FCGIに手動で$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW']を渡す必要があります。 CGIプロトコルは単にこれらの変数をサポートしていません。

あなたはまだそれらを使用したい場合は、私が何か面白いものを見つけました(と私は言ったことを確認する)http://be2.php.net/manual/en/features.http-auth.php#108132

2

であなたの.htaccessを削除し、このラインで新しいものを書く:

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0

とPHPが正常に動作します。

+0

私は '.htaccess'の最初の行として追加しました。 – Martijn

関連する問題