[function.fopen]:無法打開流:HTTP請求失敗! HTTP/1.1 401未授權[function.fopen]:無法打開流:HTTP請求失敗! HTTP/1.1 401未授權
我定期得到這個錯誤,即它只發生在隨機時間,任何想法會導致這種情況,我檢查了我的php.ini並將allow_url_fopen設置爲true。
[function.fopen]:無法打開流:HTTP請求失敗! HTTP/1.1 401未授權[function.fopen]:無法打開流:HTTP請求失敗! HTTP/1.1 401未授權
我定期得到這個錯誤,即它只發生在隨機時間,任何想法會導致這種情況,我檢查了我的php.ini並將allow_url_fopen設置爲true。
10.4.2 401未經授權
請求需要用戶認證 。響應必須包含WWW認證報頭 字段(第14.47節),其中包含適用於請求的 資源的 詢問。客戶端可以用合適的授權 頭字段重複 請求(14.8節)。如果 請求已包含授權 憑證,則401響應 指示授權已被拒絕這些憑證的 。如果 401響應包含相同 挑戰,因爲前一響應,並 用戶代理已經嘗試 認證至少一次,那麼 用戶應提交這是在響應中給出的實體 ,因爲 該實體可能包含相關的 診斷信息。 HTTP訪問 認證在「HTTP 認證:基本和摘要 訪問認證」[43]中進行了說明。
您試圖訪問需要身份驗證的網站,瑪吉指出。 fopen()
不支持HTTP Basic Authentication,因此您必須使用Client URL Library來實現此類功能。
如果網站需要基本身份驗證,你可以給你的憑據是這樣的:通過讀取頭手動
fopen("http://user:[email protected]/path/to/resource", "r");
如果使用摘要身份驗證,你必須處理它失敗的響應,併發送一個新的正確的標題。請參閱HTTP context options瞭解如何閱讀和設置標題,並瞭解HTTP authentication with PHP中的摘要是如何工作的。您可以使用cURL extension或HTTP PECL extension。
任務 - 打開基本的HTTP身份驗證。
$auth_header = 'Authorization: Basic '.base64_encode("$user:$password");
$f = fopen($url, $open_mode,false, stream_context_create(
'http'=>array(
'header' => array($auth_header,$some_other_header,$some_yet_header),
),
));
這是不正確的。 http包裝器支持基本認證。它不支持摘要式身份驗證。 – Artefacto 2010-07-26 13:50:16