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 サイトの他の関連記事を参照してください。