ホームページ > バックエンド開発 > PHPチュートリアル > PHP で「file_get_contents」が外部 URL のフェッチに失敗するのはなぜですか? どうすれば修正できますか?

PHP で「file_get_contents」が外部 URL のフェッチに失敗するのはなぜですか? どうすれば修正できますか?

Susan Sarandon
リリース: 2024-12-09 00:52:10
オリジナル
192 人が閲覧しました

Why Does `file_get_contents` Fail to Fetch External URLs in PHP, and How Can I Fix It?

PHP の file_get_contents の外部 URL バリア: php.ini の詳細を調べる

PHP の領域では、file_get_contents 関数は次のような便利な方法を提供します。ファイルまたはリモート リソースのコンテンツを取得します。ただし、php.ini ファイル内の特定の構成は、外部 URL にアクセスするときにその機能を妨げる可能性があります。

ユーザーのジレンマで明らかなように、file_get_contents('http://example.com') は、次の内容に応じて対照的な結果をもたらす可能性があります。サーバー環境。一部の設定では意図したとおりに動作しますが、内部ファイルにアクセスするときにローカルで動作しているにもかかわらず、特定のサーバーでは空の結果が生成されます。

重要なのは、この矛盾の原因となっている特定の php.ini 設定を特定することにあります。潜在的な原因の 1 つは、外部 URL を開く PHP スクリプトの機能を制御するallow_url_fopen ディレクティブです。このディレクティブが 0 に設定されている場合、file_get_contents などの PHP 関数を介した外部 URL へのアクセスは禁止されます。

さらに、ユーザーのエクスペリエンスでは、ローカル ファイルへのアクセスと外部ファイルへのアクセスの区別が強調されます。 allow_url_fopen ディレクティブは、PHP とローカル ファイルの対話には影響しません。ただし、リモート リソースに関しては、関数の動作はディレクティブの値 1 の有無に依存します。

php.ini によってもたらされる潜在的な障害を回避するために、別のアプローチを採用できます。実行可能なオプションの 1 つは、回答で提供されているような関数を利用することです。

function get_content($URL) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_URL, $URL);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
ログイン後にコピー

この関数は、file_get_contents の動作をエミュレートしますが、cURL の機能を利用して外部 URL と対話します。 cURL を採用することで、php.ini 設定でallow_url_fopen の使用が制限されている場合でも、リモート リソースに柔軟にアクセスできるようになります。

以上がPHP で「file_get_contents」が外部 URL のフェッチに失敗するのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート