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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 20:07:12768ブラウズ

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

PHP file_get_contents が外部 URL コンテンツの取得に失敗する

PHP file_get_contents 関数を使用してリモート URL (例: 、file_get_contents('http://example.com'))、問題が発生しました特定のサーバーでは結果が常に空になります。ただし、同じ関数を使用してローカル ファイルにアクセスすると、予期した結果が返されます。

php.ini の考えられる原因

空の結果は、PHP の構成設定に起因する可能性があります。 php.ini file.

解決策

この問題を解決するには、php.ini ファイル内の次の特定の構成を確認してください:

  • allow_url_fopen: この設定が有効になっていることを確認します (1 またはオンに設定)。 PHP がファイル システム関数を使用して URL にアクセスできるかどうかを制御します。
  • allow_url_include: PHP がリモート URL を直接含めないようにする場合は、この設定を無効にします (0 またはオフに設定します)。
  • file_get_contents.allow_url_fopen: 存在する場合、この設定特に file_get_contents に対しては、allow_url_fopen をオーバーライドします。有効になっている (1 に設定されている) ことを確認してください。

これらの設定が説明どおりに設定されていない場合は、それに応じて調整し、PHP サーバーを再起動して変更を適用します。

代替アプローチ

php.ini 設定を変更できない場合、または別のアプローチを希望する場合は、次の動作を模倣できます。次の例に示すように、cURL を使用した file_get_contents:

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;
}

echo get_content('http://example.com');

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。