在浏览器中运行URL时,会生成与以下代码相同的凭据,它会生成XML。但是,当从服务器运行以下代码时,我得不到任何错误消息或任何结果。 我做错了是IP块,代码错误还是?
根据文档认证是"基本的HTTP / 1.0认证请求"。
<?php
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
$username="myUsername";
$password="myPassword";
$url="http://domain.com?getFeed.php?id=3";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$file = curl_exec($ch);
curl_close($ch);
print $file;
?>
<?php
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
$username="myUsername";
$password="myPassword";
$url="http://domain.com?getFeed.php?id=3";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$file = curl_exec($ch);
curl_close($ch);
print $file;
?>
答案 0 :(得分:2)
同时添加以下代码,您将获得有关其失败原因的正确信息。
curl_setopt($curlhandle, CURLOPT_VERBOSE, true);
答案 1 :(得分:0)
让我引用documentation:
成功时返回TRUE,失败时返回FALSE。但是,如果 设置CURLOPT_RETURNTRANSFER选项后,它将返回结果 成功,失败就错了。
由于您未设置此选项,因此$file
为true或false。但你只需打印它。
if ($file) {
// success
// get the body
} else {
// failure
// check curl_error()
}
答案 2 :(得分:0)
您遇到的一个错误是您使用了错误的HTTP身份验证方法,使用CURLAUTH_ANYSAFE
,但您写的应该是
基本HTTP / 1.0身份验证请求
因此,将CURLOPT_HTTPAUTH设置为,
url_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
(或将其留空,因为CURLAUTH_BASIC
是默认值)