php - 为什么 $_SERVER ["PHP_AUTH_USER"] 和 $_SERVER ["PHP_AUTH_PW"] 没有设置?

标签 php web-services authentication basic-authentication

在开始之前,我想指出我浏览了 Stack Overflow 并发现了其他类似的问题 - PHP_AUTH_USER not set?HTTP Auth via PHP - PHP_AUTH_USER not set? - 这些已经指出,如果“服务器 API”设置为“CGI/FCGI”,则不会设置身份验证 $_SERVER 变量,但我检查了我的“phpinfo()”输出和我的““服务器 API”设置为“Apache 2.0 处理程序”。

好的,我有一个简单的脚本如下:

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

...我通过以下方式远程调用:

wget -v --http-user=johnsmith --http-password=mypassword http://www.example.com/myscript.php

...但只输出:

Username: , Password:

我还尝试使用 PHP cURL 调用脚本并适本地设置身份验证参数,如下所示:

 curl_setopt($ch, CURLOPT_USERPWD, "johnsmith:mypassword");

...但我得到与上面相同的输出。

知道我做错了什么吗?也许我还需要启用/配置其他东西?

最佳答案

对于 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)));

关于php - 为什么 $_SERVER ["PHP_AUTH_USER"] 和 $_SERVER ["PHP_AUTH_PW"] 没有设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14724127/

相关文章:

java - 如何将 JSON 对象从 POSTMAN 发送到 Restful Web 服务

cakephp - acos 表中使用的 model、lft 和 rght 字段是什么?

php - 在 Model Zend Db Table 中更改数据库名称

php - 通过 PHP/MySQL 将应用程序数据导出为 XML 的最佳实践?

c# - ServiceStack 'Access is denied' 又来了,还有其他问题

authentication - 多个网站的 JWT token

authentication - 热门网站如何允许您从 Facebook 等其他网站登录?

php - 如何使用 PHP 判断文件是否为文本?

javascript - 如何在单击链接时传递动态值?

java - 如何解决使用 jersey 在 java Rest 服务中生成 xml 的问题?