3

PHP を使用して xml ファイルをダウンロードする必要があります。curl 呼び出しを行うときに次のオプションを設定することで、ファイルの内容を読み取ることができます。

curl_setopt ($http, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($http, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($http,CURLOPT_USERAGENT,'XYZ');

上記のスニペットから明らかなように、VERIFYHOST を false にする必要があり、ファイルを読み取るための呼び出しを行うときに明示的な USERAGENT を設定する必要もあります。これは、ファイルがパブリックにアクセスできず、特定のアプリケーションのみがそれを読み取るための呼び出しを行うことができるためです (Web-Securityテクニックなど)

しかし、どうすれば同じファイルをダウンロードできますか、試してみreadfileましたがfopen/fpassthrufile_get_contents何も機能していないようです。Readfile でエラーが発生するfailed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

fopenまたはでcurlのようなオプションを提供する方法はありますかreadfile?これを解決する最も簡単な方法だと思います。PHP のドキュメントにはあまり助けがありませんでした。

助けてください。

4

1 に答える 1

3

特別なユーザー エージェントをストリーム コンテキストにアタッチする必要があります。

http://www.php.net/manual/en/wrappers.http.phpから

HTTP GET メソッドを使用して、HTTP 1.0 経由でファイル/リソースへの読み取り専用アクセスを許可します。Host: ヘッダーは、名前ベースの仮想ホストを処理する要求と共に送信されます。php.ini ファイルまたはストリーム コンテキストを使用して user_agent 文字列を構成した場合、それも request に含まれます。

上記のリンクの例 #2:

<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");

$fp = fopen('http://www.example.com/index.php', 'r');
?>
于 2012-07-17T19:35:57.863 に答える