ホームページ > バックエンド開発 > PHPチュートリアル > file_get_contents は Web ページのコンテンツを取得できません

file_get_contents は Web ページのコンテンツを取得できません

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-29 09:04:27
オリジナル
1260 人が閲覧しました

署名検証の過程で、サーバーは多くの場合、チャネル サーバーからユーザーの情報を取得する必要があります。通常、curl と file_get_contents の 2 つのメソッドがあります。

通常の状況では、このように使用しても問題ありません。

<span> 1</span><span>public</span><span>function</span> OauthPostExecuteNew(<span>$sign</span>,<span>$requestString</span>,<span>$request_serverUrl</span><span>){
</span><span> 2</span><span>$opt</span> = <span>array</span>("http"=><span>array</span><span>(
</span><span> 3</span>         "method"=>"GET",
<span> 4</span>         "header"=><span>array</span>("param:".<span>$requestString</span>,"oauthsignature:".<span>$sign</span>),
<span> 5</span>         "request_fulluri"=><span>true</span><span> 6</span><span>        )
</span><span> 7</span><span>    );
</span><span> 8</span><span> 9</span><span>$context</span> = <span>stream_context_create</span>(<span>$opt</span><span>);
</span><span>10</span><span>$res</span>=<span>file_get_contents</span>(<span>$request_serverUrl</span>, <span>false</span>, <span>$context</span><span>);
</span><span>11</span><span>12</span><span>return</span><span>$res</span><span>;
</span><span>13</span> }
ログイン後にコピー

ただし、サーバーはプロキシを介して外部ネットワークに接続しているため、stream_context_create を使用してチャネル サーバーにアクセスする場合は、プロキシ パラメータを指定する必要があります。

そこで、上記のコードの $opt 配列に "proxy"=>$proxy フィールドを追加します。追加後もfile_get_contentsが正常に検証できないことが分かりました。

困ったので、公式サイトでfile_get_contentsを確認したら、proxyについての説明がなかったので、stream_context_createで検索したら、公式の説明にこんな一文がありました

paramsparams

必须是 $arr['parameter'] = $value 格式的关联数组。 请参考 context parameters 里的标准资源流参数列表。

那么 我们进入context_parameters 查看参数配置。因为我们使用的是HTTP方式,所以查看HTTP context

查看跟proxy相关的

proxy string

URI 指定的代理服务器的地址。(e.g. tcp://proxy.example.com:5100).

request_fulluri boolean

当设置为 TRUE 时,在构建请求时将使用整个 URI 。(i.e. GET http://www.example.com/path/to/file.html HTTP/1.0)。 虽然这是一个非标准的请求格式,但某些代理服务器需要它。

默认值是 FALSE

$ arr['parameter'] = $value 形式の連想配列である必要があります。 コンテキストパラメータの標準リソースフローパラメータリストを参照してください。

次に、context_parameters に移動してパラメータ設定を表示しましょう。 HTTP を使用しているため、HTTP コンテキスト

をチェックしてプロキシ関連を表示します

proxy string

🎜URI 指定されたプロキシ サーバーのアドレス。 (例: tcp://proxy.example.com:5100)。🎜🎜request_fulluri boolean🎜🎜 TRUE 、リクエストを構築するときに URI 全体が使用されます。 (つまり、<em>GET http://www.example.com/path/to/file.html HTTP/1.0</em>)。 これは非標準のリクエスト形式ですが、一部のプロキシ サーバーではこれが必要です。 🎜🎜デフォルト値は <code>FALSE です。🎜🎜🎜 プロキシのみが設定されていることがわかりましたが、request_fulluri は設定されていなかったので、request_fulluri=true を追加して検証に合格しました。 🎜🎜注: proxy パラメーターを使用する場合、具体的な理由はわかりませんが、http を tcp に変更する必要があります。分かりましたらここで更新します。 🎜 🎜 上記は、file_get_contents が Web ページのコンテンツを取得できない問題を、コンテンツの側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。 🎜 🎜 🎜
関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート