Фон
У меня установлен Apache / 2.2.15 (Win32) с установленным PHP / 5.3.2, обработка аутентификации.
<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>
Аутентификация работает отлично! Нет проблем.
Но что касается документации , любое дополнительное поле, возвращаемое обратно из 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), указывающее, что переменная не найдена!
Однако, если я перехожу на другую переменную среды Apache, такую как HTTP_HOST, она работает.
... и да, я пробовал getenv()
также, тот же результат.
Также есть примечание, что сервер Apache должен быть скомпилирован с APR 1.3.0 для работы. Я использовал сборку Apache msi из httpd.apache.org, и она, кажется, скомпилирована с APR выше версии 2. Поскольку я могу видеть их с phpinfo()
, они должны быть доступны из PHP.