У меня есть Apache/2.2.15 (Win32) с PHP/5.3.2 настройки, обработки аутентификации.Невозможно получить переменные окружения Apache в PHP
<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 Environment».
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.
* \ [♦ примечание: см. [История изменений] (http://stackoverflow.com/posts/4308886/revisions) для контекста этого комментария.] * Обычно мы не плачем о чьем-то английском (ваш довольно хорошо), и если форматирование вашего кода сосало, кто-то, вероятно, отредактировал бы его, чтобы он был хорошо читаемым. Кроме того, SO - это не то место, где людям говорят google/rtfm - googling/rtfming - это то, что могут ответить люди, так как они получат + rep для него, сообщая, что вы это сделаете, скорее всего, приведет к -rep. : p – ThiefMaster
У меня нет ответов на ваш вопрос, но +1 за лучший структурированный вопрос, который я когда-либо видел. –
Совершенно действительный вопрос, не нужно быть настолько защитным. :) Ответы RTFM обычно зарезервированы для многих, * много * худших (не) вопросов. – deceze