先日、あるシステムのデータを乗せてるサーバーを交換しました。
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の許可は正常にできております。
環境が変わったとしたら、サーバーの機種くらいです。
このような状態になった事ある方いましたら原因を教えていただきたいです。
register_globals on も必要としているシステム?
必要ではありません。
余談ですが、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
個人的には iptables の設定ミスか、SELinux の設定周りだと推測するが。
現状では特定のしようがないので PHP の問題かどうかだけでも判断してみると良いと思う。
ログイン後、TELNET コマンド等で該当URL に正常にアクセスできるなら PHP の問題。
出来無いなら OS やその周辺環境の問題。
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.
http://URL/ 側で、PHPを動かしているサーバを Allow していないということはありませんか?→PHPを動かしているサーバでブラウザを使ってhttp://URL/***/***/***.phpにアクセスできるかどうかご確認ください。
直接URL叩くと表示できます。continueかsuspendを返すようにしているので、値を入れると
suspendが帰ってきます。
ありがとうございます。
アクセス権限は777にしてもだめでした。
直接URLを叩くと表示されるので、別問題のような気がします。