何らかの理由で、内のコードのいずれも
if (isset($_SERVER['PHP_AUTH_USER']) &&
isset($_SERVER['PHP_AUTH_PW']))
{
// When the above is set, the code that is here will execute of course
}
私のために実行されています。正しいユーザー名とパスワードを入力すると、認証のプロンプトボックスが再びポップアップします。両方のフィールドが正しく設定されていて、Enterキーを押した場合、両方のフィールドは「設定」されませんか?しかし、何らかの理由でそうではありません。何が間違っているのでしょうか?ありがとうございました。
CGIモードPHPでHTTP基本認証を使用する「賢明な方法」があります。
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
およびPHP使用
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
これを試して
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>
ルートディレクトリに配置する必要がある.htaccessファイル
その後
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
phpスクリプトの開始時
Ubuntu 14.04でPHP-PFM + Apache 2.4で実行されているSymfony 2.5.7を使用しています。 BASIC_AUTHが動作しています。次を追加して、Apache VirtualHostを正しく構成する必要があります。
SetEnvIf許可 "(。*)" HTTP_AUTHORIZATION = $ 1
こちらにも記載されているとおり https://stackoverflow.com/a/17490827/435956
私のphpinfo()では、サーバーAPIはCGI/Fastcgiです。 .htaccessファイルRewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L]
に以下を書き込むことで問題を解決しました
$_SERVER['REMOTE_USER']
。これは、PHP 5.3 CGI + Apacheインストールで動作します。
URLでユーザー名/パスワードを指定してユーザーアクセスが許可されている場合は、
AuthType Digest
vHost/Directory/.htaccess構成で資格があります。
これにより、私のユースケースで修正されました。