未设置PHP\u身份验证\u用户?

未设置PHP\u身份验证\u用户?,php,http-authentication,Php,Http Authentication,由于某种原因,其中没有任何代码 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 } 正在为我执行死刑。当我输入正确的用户名和密码时,再次弹出授权提示框。如果两个字段都正确并且我按enter键,那么这两个字段不是都“设置”了

由于某种原因,其中没有任何代码

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

}
正在为我执行死刑。当我输入正确的用户名和密码时,再次弹出授权提示框。如果两个字段都正确并且我按enter键,那么这两个字段不是都“设置”了吗?但出于某种原因,情况并非如此。我会做错什么?
谢谢。

试试
$\u服务器['REMOTE\u USER']
。这对我在PHP5.3CGI+Apache安装上很有用。

在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)));

如果在URL中提供用户名/密码,则授予用户访问权限,请检查

AuthType Digest
在VHost/Directory/.htaccess配置中被命名为


在我的主机服务器上,使用
$\u服务器['REDIRECT\u REMOTE\u USER']
而不是
$\u服务器['PHP\u AUTH\u USER']

根据
phpinfo()
,我的服务器API是CGI/Fast CGI,因此我通过在
.htaccess
文件中添加以下内容解决了这个问题:

RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
试试这个

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

在开始编写php脚本时,我使用的是运行在Ubuntu 14.04上的php-PFM+Apache 2.4上的Symfony 2.5.7。 我的基本身份验证工作正常,它需要通过添加以下内容来正确配置Apache VirtualHost:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

如前所述。

从Apache 2.4.13开始,您只需在.htaccess中使用指令:

CGIPassAuth On

出于某种原因,在我的服务器上,我不得不使用$\u server['REDIRECT\u HTTP\u AUTHORIZATION'],这对我来说只适用于.htacess中的RewriteRule行。我不需要对PHP做任何更改,现在设置了
$\u服务器['PHP\u AUTH\u用户]
$\u服务器['PHP\u AUTH\u PW']
。有人能在这个回复中解释一下重写规则吗?这对我来说很有效,但我实际上并不理解它。:-)首先尝试检查
$\u服务器['REDIRECT\u HTTP\u AUTHORIZATION']
是否已设置且不为空,然后您可以使用
列表($\u服务器['PHP\u AUTH\u USER'],$\u服务器['PHP\u AUTH\u PW']=explode(':',base64\u解码(substr($\u服务器['HTTP\u AUTHORIZATION'],6)),因为在我的例子中,一些相同的服务器有
重定向\u HTTP\u授权
索引,而不是
HTTP\u授权
,所以最好为这两个偏移设置一个完整的条件。这里相同:PHP在PHP-FPM模式下运行,apache 2.4,centOS。我只需要将这一行添加到vhost配置中,它工作得非常好,PHP上没有任何更改side@garyJ,是“basic”的长度。你能解释一下为什么.htaccess中需要这一行吗?对于meSeems来说,不在带有LAMP的Plesk安装下工作是有效的(对不起,我不知道这个特定提供商使用的是什么版本的Plesk;Apache是旧的2.2,PHP是更旧的5.3.3)。
CGIPassAuth On