1

我查看了有关 stackoverflow 的其他几个问题,通过 PHP 处理这个问题 HTTP Auth - PHP_AUTH_USER 未设置?PHP_AUTH_USER 没有设置?,但他们都指出将“服务器 API”设置为 CGI 的问题,对我来说,它设置为“Apache 2.0 处理程序”。

我正在使用 UBUNTU 12.04LTS。

我的 docroot 中有一个名为 my.php 的简单脚本:

<?php
echo "Username: " . $_SERVER["PHP_AUTH_USER"] . ", Password: " . $_SERVER["PHP_AUTH_PW"];
?

当我运行 wget 时,我可以看到两者都是空的:

wget -v --http-user=johnsmith --http-password=mypassword http://192.168.1.163/my.php

返回:

Username: , Password: 

我启用了以下 apache 模块:

/etc/apache2/mods-enabled
alias.conf       authn_file.load       authz_host.load  autoindex.load  deflate.load  env.load   negotiation.conf  php5.load        rewrite.load   status.conf
alias.load       authz_default.load    authz_user.load  cgi.load        dir.conf      mime.conf  negotiation.load  reqtimeout.conf  setenvif.conf  status.load
auth_basic.load  authz_groupfile.load  autoindex.conf   deflate.conf    dir.load      mime.load  php5.conf         reqtimeout.load  setenvif.load

我还尝试在我的 .htaccess 中为“AuthType Basic”添加一行,但无济于事。

还有其他需要设置或配置的东西吗?

4

2 回答 2

1

在我看来,您没有正确发送所需的参数!
你试过wget http://johnsmith:mypassword@192.168.1.163/my.php吗?

于 2013-11-26T12:37:05.403 回答
0

对于 PHP-CGI:

在 .htaccess 添加这个:

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

并在脚本的开头添加以下内容:

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
于 2014-03-21T12:54:58.313 回答