在开始之前,我想指出我浏览过 Stack Overflow 并发现了其他类似的问题 -PHP_AUTH_USER 未设置? https://stackoverflow.com/questions/3663520/php-auth-user-not-set and 通过 PHP 进行 HTTP 身份验证 - PHP_AUTH_USER 未设置? https://stackoverflow.com/questions/7053306/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)));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)