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 }
正在为我执行。 当我input正确的用户名和密码时,再次popup授权提示框。 如果这两个字段是正确的,那么这两个字段都不会被设置? 但由于某种原因,情况并非如此。 我能做什么错了? 谢谢。
在CGI模式PHP中使用HTTP Basic Auth有一个“明智的方法”:在.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)));
尝试这个
<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脚本的开始
我在Ubuntu 14.04下使用了PHP-PFM + Apache 2.4下的Symfony 2.5.7,并且要使BASIC_AUTH正常工作,我还需要通过添加以下内容来正确configurationApache VirtualHost:
SetEnvIf Authorization“(。*)”HTTP_AUTHORIZATION = $ 1
试试$_SERVER['REMOTE_USER']
。 这适用于我在PHP 5.3 CGI + Apache安装。
如果用户访问被授予在URL中提供用户名/密码,请检查是否
AuthType Digest
有权在您的VHost / Directory / .htaccessconfiguration。
这固定了我的用例。
在我的phpinfo()Sever API是CGI / Fast CGI。 所以我已经解决了我的问题,在我的.htaccess文件RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L]
在主机的服务器上,使用$_SERVER['REDIRECT_REMOTE_USER']
而不是$_SERVER['PHP_AUTH_USER']