Apache で Basic 認証の値が PHP などに渡っていない時の対処法


PHP 側で BASIC 認証を処理する時は、サーバーからPHPに BASIC 認証の値を渡して上げる必要があるけれど、Apache の config で下記を設定しないと引き渡されないというのにハマる。

設定方法

以下を httpd.conf に追記。
(許可している場合は) .htaccess にても設定可能。

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

テスト方法

Basic 認証で入力された ID や PW が表示されます。

<dl>
    <dt>PHP_AUTH_USER</dt>
    <dd><?php var_dump($_SERVER['PHP_AUTH_USER']); ?></dd>
    <dt>PHP_AUTH_PW</dt>
    <dd><?php var_dump($_SERVER['PHP_AUTH_PW']); ?></dd>
</dl>

うまく渡っていない時は、Null が返されてしまいます。

Apache をしばらく使っていないと、こういうのを忘れてしまいます。