Я попытался обновить версию php моего VPS, но это не сработало, и мой провайдер не помог мне, поэтому я понижаю его до предыдущей версии.
Теперь я работаю с PHP 5.2.17 (cli). В этой версии все работало правильно.
Начиная с этого обновления и понижения, переменная $_SERVER['PHP_AUTH_USER']
пуста. (В php.ini register_globals
имеет значение «on», а $_SERVER['PHP_SELF']
работает правильно).
Он правильно спросит меня о моем имени пользователя и пароле, а также о успехе подключения, но мне нужно использовать $_SERVER['PHP_AUTH_USER']
.
Я пробовал $_SERVER['PHP_AUTH_USER']
, $_SERVER['AUTH_USER']
, гайка $_SERVER['REMOTE_USER']
не работает. (но я никогда не получаю никакой ошибки, просто пустое значение …)
Наконец, я нашел ответ благодаря «mbinette».
В моей конфигурации PHP обработчик PHP 5 был CGI, и этот тип аутентификации не работает с PHP CGI. Поэтому я изменил его на suPHP (который должен быть по умолчанию для APACHE).
Найдите здесь сообщение, объясняющее способ использования CGI и PHP_AUTH, но я пробовал, и он не работал.
Найдите здесь несколько объяснений о обработчиках php
Включен ли безопасный режим? Это может быть вашей проблемой …
Начиная с PHP 4.3.0, чтобы кто-то не написал сценарий, который показывает пароль для страницы, прошедшей проверку подлинности с помощью традиционного внешнего механизма, переменные PHP_AUTH не будут установлены, если для этой конкретной страницы включена безопасная режим включен. Независимо от того, REMOTE_USER может использоваться для идентификации пользователя, прошедшего проверку подлинности. Таким образом, вы можете использовать $ _SERVER ['REMOTE_USER'].