php5 に付属の file_get_contents メソッドを使用してリモート ファイルを取得すると、警告メッセージ file_get_contents(): failed to open stream: HTTP request failed! が表示されることがあります。
Google や Baidu にはそのような問題がたくさんあります。解決策は php.ini を変更し、allow_url_fopen を有効にして、allow_url_fopen = On に変更することです
これで一部の人の問題が解決できると言う人もいます。php.ini には、allow_url_fopen =on (URL 経由でリモート ファイルを開くことができることを示す)、user_agent="PHP" (ネットワークにアクセスするスクリプトを示す、デフォルトでは、その前に「;」があります(これを削除して)サーバーを再起動します。
しかし、一部の人にはまだこの警告メッセージが表示されます。完璧な解決策を達成するには、php.ini で user_agent を設定する必要があります。PHP のデフォルトの user_agent を Mozilla/4.0 に変更します。 ; MSIE 6.0; Windows NT 5.0) をシミュレートします
user_agent=”Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.0)”
仕事でこの問題に遭遇し、完璧に解決したので、みんなと共有します。
chemblink の構造式をバッチで取得したところ、ループ後に一部の画像が表示できないことがわかりましたが、リモート ファイルは存在していました。
リモート ファイルを取得すると、「Warning: readfile(http://www.BkJia.com/logo.gif) [function.readfile]: failed to open stream: HTTP request failed!」のような警告メッセージが表示されます。
$img = ob_get_contents();
ob_end_clean();
このように、運用中に時々上記のエラーが発生するようになり、file_get_contentsなど他の関数も変更しましたが、ネットで調べたところ、CURLメソッドを使用するとエラーが発生しないことが分かりました。
$ch =curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
$img =curl_exec($ch);
http://www.bkjia.com/PHPjc/486273.html
true