背景
我有一個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()
,我可以看到在「阿帕奇環境」這些變量與他正確的價值觀。
AUTHENTICATE_USERNAME
AUTHENTICATE_REALM
AUTHENTICATE_ACCESS
問題
我無法從我的PHP獲取這些環境變量。
1 <?php
2 $Access = apache_getenv('AUTHENTICATE_ACCESS',true);
3 var_dump($Access);
4 ?>
第3行打印bool(false)表示找不到變量!
但是,如果我更改爲另一個Apache環境變量,如'HTTP_HOST',它就可以工作。
..和是的,我已經試過getenv()
也,同樣的結果。
還有一個需要注意的是Apache服務器需要與APR 1.3.0編譯工作。我使用的是httpd.apache.org上的Apache msi版本,它似乎是用APR高於版本2編譯的。由於我可以用phpinfo()
查看它們,因此它們必須可以從PHP訪問。
* \ [注意:請參閱[修訂歷史](http://stackoverflow.com/posts/4308886/revisions)關於此評論的上下文。] *我們通常不會關注某人的英語(你的很漂亮好),如果你的代碼格式吸引了某人可能會編輯它,所以它很好讀。此外,SO不是人們被告知google/rtfm的地方 - googling/rtfming是人們回答可能會做的事情,因爲他們會得到+ rep,同時告訴您這樣做很可能會導致-rep。 :p – ThiefMaster 2010-11-29 23:04:16
我對你的問題沒有任何答案,但是+1對於我所見過的最好的結構化問題。 – 2010-11-29 23:09:35
完美有效的問題,不需要如此防守。 :) RTFM答案通常保留很多,*很*更糟(非)問題。 – deceze 2010-11-30 00:21:41