PHP関数の(file_get_contents)について質問です。


先日、あるシステムのデータを乗せてるサーバーを交換しました。
OSとPHPのバージョン(5.3.2)はもちろんサーバーの全ての設定を引き継ぎました。
交換後、動作確認したところ、file_get_contentsを利用した部分が動かなくなりました。

以下エラー(URLは伏せてます)
Warning: file_get_contents(http://URL/***/***/***.php) [function.file-get-contents]: failed to open stream: HTTP request failed! in /***/***.php on line 35

php.iniで下記の設定は行っています。
allow_url_fopen = On
allow_url_include = On

その他確認した部分として、
名前解決、サーバー間の80protの許可は正常にできております。

環境が変わったとしたら、サーバーの機種くらいです。
このような状態になった事ある方いましたら原因を教えていただきたいです。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/04/27 21:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント20pt

http://blog-802008.cocolog-nifty.com/blog/2009/09/file_get_conte...

あと確認するのは アクセス権限ぐらいかな?

id:sifty77

ありがとうございます。

アクセス権限は777にしてもだめでした。

直接URLを叩くと表示されるので、別問題のような気がします。

2010/04/21 13:43:40
id:koriki-kozou No.2

回答回数480ベストアンサー獲得回数79

ポイント20pt

register_globals on も必要としているシステム?

id:sifty77

必要ではありません。

余談ですが、php5.3.2でregister_globals onにすると

php -i |grep config で下記エラーがでます。

PHP Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0

2010/04/21 13:45:11
id:ko8820 No.3

回答回数1221ベストアンサー獲得回数69

ポイント20pt

IPを直接指定しては?

名前解決に失敗してるとか?

id:sifty77

名前解決は出来ております。

IP指定も試してみましたが、結果は同じでした。

2010/04/21 13:46:13
id:b-wind No.4

回答回数3344ベストアンサー獲得回数440

ポイント20pt

個人的には iptables の設定ミスか、SELinux の設定周りだと推測するが。


現状では特定のしようがないので PHP の問題かどうかだけでも判断してみると良いと思う。

telnetでブラウズ(HTTP)

ログイン後、TELNET コマンド等で該当URL に正常にアクセスできるなら PHP の問題。

出来無いなら OS やその周辺環境の問題。

id:sifty77

telnet接続は問題ないようでした。

下記に出ている通り、接続先サーバーのPHPは5.2.13です。

やはりPHPの問題ですね・・

telnet URL 80

Trying ***.***.***.***...

Connected to URL.

Escape character is '^]'.

GET http://URL/***/***/***.php HTTP/1.0

HTTP/1.1 200 OK

Date: Wed, 21 Apr 2010 04:38:38 GMT

Server: Apache/2.2.11 (Unix) PHP/5.2.13

X-Powered-By: PHP/5.2.13

Content-Length: 0

Connection: close

Content-Type: text/html

Connection closed by foreign host.

2010/04/21 13:51:24
id:Bombastus No.5

回答回数409ベストアンサー獲得回数52

ポイント20pt

http://URL/ 側で、PHPを動かしているサーバを Allow していないということはありませんか?→PHPを動かしているサーバでブラウザを使ってhttp://URL/***/***/***.phpにアクセスできるかどうかご確認ください。

id:sifty77

直接URL叩くと表示できます。continueかsuspendを返すようにしているので、値を入れると

suspendが帰ってきます。

2010/04/21 13:56:22

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません