簡體   English   中英

PHP file_get_contents“需要授權”

[英]PHP file_get_contents “authorization required”

我正在嘗試從需要身份驗證的服務器中獲取文件。 我有以下PHP代碼:

//Import categories
$url = "http://$username:$password@www.example.com";
$categoriesXML = file_get_contents($url);

var_dump($url . " > " . $categoriesXML);
return;

該頁面的輸出僅是:string(22)“需要授權”。 我也嘗試過:

$context = stream_context_create(array('http' => array('header'  => "Authorization: Basic " . base64_encode("$username:$password"))));

$url = "http://www.example.com";
$categoriesXML = file_get_contents($url, false, $context);

var_dump($categoriesXML);
return;

我也嘗試使用cURL和以下代碼:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

var_dump($output);
return;

cURL在$ info中返回301代碼,而$ output為空。 我是PHP /服務器新手,我在做什么錯?

OP的問題是由於選擇了錯誤的HTTP身份驗證機制造成的。 事實證明,將CURLOPT_AUTHCURLAUTH_BASIC或更寬松的CURLAUTH_ANY可以解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM