• 締切済み

file_get_contentsで外部URLファイルの読み込みの設定

外部URLのXMLが取得したく、file_get_contentsで取得しようと思っております。 ただ、サーバマシンからですと、falseが返ってきてしまいます。 環境は、 php 4.3.9(RedhatEL4のup2dateでインストール出来るバージョン) になります。 php.iniの allow_url_fopenはOn default_socket_timeoutも60 と十分取っております。 $content = file_get_contents('http://アドレス'); でテストしますと、 私のローカル(OSX php5.2.1) で確認しますと、正常に取得出来るのですが、 RedhatEL4 php4.3.9で行いますと、 falseが返ってきてしまい、取得出来ません。 なお、サーバマシンからwgetでは取得可能です。 allow_url_fopen以外に、何か設定が必要になりますでしょうか。 アドバイスを頂けませんでしょうか。 よろしくお願いいたします。

みんなの回答

回答No.2

私の比較的古い環境(PHP 4.3.11)でやっても正常に取得できてしまいますね。 allow_url_fopen = On です。 ちょっと原因は分かりませんが、$fp = fopen($url, "r");ではどうなります?

kakekake_07
質問者

補足

ありがとうございます。 fopenでも、 failed to open stream: HTTP request failed! in ....... とエラーが返ってきます。 echo ini_get('allow_url_fopen'); で1が返って来る事からOnになっています。(phpinfoでも確認済み) RedHatやCentOSでup2dateやyumでインストールしたサーバでこの現象が 発生しております。 また、phpのバージョンは、4.3.9、rpmのファイル名は、php-4.3.9-3.22.9になります。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

ありきたり・・・ではありますが 呼び先のURLをもう一度確認されてはいかがでしょう。 rawurlencodeを思わぬ形で噛んでいない、とかありませんか。 可能ならば、ですがそのxmlが格納してあるサーバのアクセスログ、 そこまでのルートの機器のログやリクエストを見てみると良いかもしれません。

kakekake_07
質問者

補足

ありがとうございます。 取得は、下記のようにしているため、特にエンコードはしておりません。 $file = 'http://www.google.co.jp'; $xml = file_get_contents($file); エラーを表示させていなかったのですが、見ますと、 Warning: file_get_contents(http://www.google.co.jp): failed to open stream: HTTP request failed! と表示されました。 allow_url_fopen = On も allow_url_fopen = 1 も試してhttpdの再起動をかけているのですが、未だに同じエラーが表示されます。

関連するQ&A

専門家に質問してみよう