PHP_AUTH_USER не установлен?
По какой-то причине ни один из кода внутри
if (isset($_SERVER['PHP_AUTH_USER']) &&
isset($_SERVER['PHP_AUTH_PW']))
{
// When the above is set, the code that is here will execute of course
}
выполняется для меня. Когда я ввожу правильное имя пользователя и пароль, снова появляется окно подсказки для авторизации. Разве оба поля не будут "установлены", если они верны, и я нажимаю клавишу ввода? Но почему-то это не так. Что я могу делать неправильно?
Спасибо.
Ответы
Ответ 1
Существует "разумный способ" использовать HTTP Basic Auth в CGI-режиме PHP: в .htaccess используйте
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
и в использовании PHP
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
Ответ 2
попробуйте это
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>
в вашем файле .htaccess, который вам нужно будет поместить в корневой каталог
а затем
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
в начале ваших php-скриптов
Ответ 3
Я использую Symfony 2.5.7, работающий на PHP-PFM + Apache 2.4 на Ubuntu 14.04. У меня работает BASIC_AUTH, он должен правильно настроить Apache VirtualHost, добавив:
SetEnvIf Authorization "(. *)" HTTP_AUTHORIZATION = $ 1
как также упоминалось здесь fooobar.com/questions/153825/...
Ответ 4
В моем API-интерфейсе phpinfo() используется CGI/Fast CGI. Поэтому я решил проблему с написанием следующего в моем файле .htaccess
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
Ответ 5
Попробуйте $_SERVER['REMOTE_USER']
. Это работает для меня на установке PHP 5.3 CGI + Apache.
Ответ 6
Если пользователю разрешен доступ с именем пользователя/паролем в URL, проверьте,
AuthType Digest
имеет право в конфигурации VHost/Directory/.htaccess.
Это исправлено для моего использования.
Ответ 7
На моих серверах хоста используйте $_SERVER['REDIRECT_REMOTE_USER']
вместо $_SERVER['PHP_AUTH_USER']