背景
私はPHP/5.3.2でApache/2.2.15(Win32)をセットアップし、認証を処理しています。PHPでApache環境変数を取得できません。
<Directory /usr/www/myhost/private>
# core authentication and mod_auth_basic configuration
# for mod_authn_dbd
AuthType Basic
AuthName "My Server"
AuthBasicProvider dbd
# core authorization configuration
Require valid-user
# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery "SELECT Password,UserName,Realm,Access FROM authn WHERE user = %s"
</Directory>
認証が正常に機能します。問題はありません。
しかしdocumentationにについては、余分なフィールドがAuthDBDUserPWQueryから戻っは、環境中AUTHENTICATION_fieldname変数に入れられます。
phpinfo()
とすると、「Apache環境」で正しい値でこれらの変数を見ることができます。
AUTHENTICATE_USERNAME
AUTHENTICATE_REALM
AUTHENTICATE_ACCESS私はPHPからこれらの環境変数を取得することはできません
問題。
1 <?php
2 $Access = apache_getenv('AUTHENTICATE_ACCESS',true);
3 var_dump($Access);
4 ?>
行3は、変数が見つからなかったことを示すbool(false)を出力します。
しかし、「HTTP_HOST」などの別のApache環境変数に変更すると動作します。
とはい、私は同じ結果をgetenv()
も試しました。
ApacheサーバーをAPR 1.3.0でコンパイルする必要があるという注意もあります。私はhttpd.apache.orgのApache msiビルドを使いました。バージョン2の上にAPRを付けてコンパイルされているようです。phpinfo()
でそれらを見ることができるので、PHPからアクセス可能でなければなりません。
*このコメントの文脈については、[改訂履歴](http://stackoverflow.com/posts/4308886/revisions)を参照してください。] *私たちは通常、良い)とあなたのコードの書式が誰かを吸っておそらくそれを編集するので、それはよく読みやすいです。さらに、人々はgoogle/rtfmに語られる場所ではありません - グーグル/ rtfmingは、あなたがそうするように指示している間に+ repを取得するので、人々が答えるかもしれないものです。 :p – ThiefMaster
私はあなたの質問に答えがありませんが、私はこれまでに見た中で最も構造化された質問を持っているため+1です。 –
完全に有効な質問ですので、守る必要はありません。 :) RTFMの回答は通常、多くの、*多*悪い(非)質問のために予約されています。 – deceze