背景
我有一个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