Php 如何读取使用摘要身份验证的远程XML文件?

Php 如何读取使用摘要身份验证的远程XML文件?,php,xml,authentication,Php,Xml,Authentication,我使用以下命令读取PHP网页中的远程XML文件: $url = 'http://www.examplesite.com/xml'; $xml = simplexml_load_file($url); 不幸的是,该站点使用摘要身份验证,通常会弹出一个用户名/密码框,要求我登录该站点。将我的用户名和密码嵌入URL本身(如)不起作用,这也不是很安全 如何(在PHP中)进行身份验证以获取XML文件 function get($url, $user, $pass) { $ch =

我使用以下命令读取PHP网页中的远程XML文件:

    $url = 'http://www.examplesite.com/xml';
    $xml = simplexml_load_file($url);
不幸的是,该站点使用摘要身份验证,通常会弹出一个用户名/密码框,要求我登录该站点。将我的用户名和密码嵌入URL本身(如)不起作用,这也不是很安全

如何(在PHP中)进行身份验证以获取XML文件

function get($url, $user, $pass) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
    curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $res = curl_exec();
    curl_close($ch);
    return $res;
}

你可以用卷曲来做这个。请注意,前3个curl标志-禁止重用、刷新连接、跟随位置,可能不需要,但在某些情况下可能需要(302 post auth等)。

可能重复我不知道另一篇文章在说什么。我正在使用PHP和simplexml元素。执行摘要身份验证不是它的工作。获取远程xml只是PHP操作方式的一个副作用。我继续得到一个“401-Unauthorized”响应,即使有一个好的URL、用户名和密码。我让其他人用curl7.21.6测试它,他们声称它有效。我的cURL版本是7.30.0。我需要在我的服务器上启用特定的cURL设置来实现这一点吗?我尝试了一个shell连接,我可以使用摘要进行身份验证。我不知道为什么PHP版本不能进行身份验证。