人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpでURLをfile_get_contentsやfopenする場合、自サーバだとNo route to hostエラーが出ます。
自サーバだからといって、ローカルファイルとして処理するとcgi処理されないので困ります。
分岐させたくないのでURLとして処理したいのですが、
bindはどう設定したらいいでしょうか。bindを使わないで済む方法も募集してます。

●質問者: yshkw
●カテゴリ:インターネット ウェブ制作
✍キーワード:BIND CGI PHP URL エラー
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● y-kawaz
●15ポイント

No route to host エラーが出るのは bind とは関係ないと思います。そもそも接続しようとしているホストに ping も届かないんじゃないでしょうか?

ローカルで httpd が起動しているならまずは http://localhost/ に対して file_get_contents をしてみてどうなるか?pingは通るのか?ホスト名ではなくIPでURLを指定したらどうなるか?など、問題の切り分けが必要だと思います。


また、bindについても書かれているので答えておきますが、別に自分でbindを立てる必要はありません。

名前解決がしたいなら /etc/resolv.conf にプロバイダから指定されたDNSサーバのIPを書けばよいでしょう。

複数ある場合は以下のようにnameserverを列挙すればよいです。

nameserver a.b.c.d
nameserver a.b.c.e
◎質問者からの返答

Warning: file_get_contents(http://localhost/) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in

ping localhostは通りますが

ping domain.comでは通りません

ping 192.168.11.2では通ります

とでました


2 ● KUROX
●5ポイント

PHPが動いているマシンとfile_get_contentsしようとする先のマシンが

同一なら、localhostでアクセス可能だと思うのですが・・。

変わりに127.0.0.1でアクセスしても、エラーになりますか?

◎質問者からの返答

おっしゃるとおりなのですが、アクセスできません。

file_get_contents(http://127.0.0.1/) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in ...

となりましたね。ちなみに/etc/resolv.conf はルータを指定しています。

nameserver 192.168.11.1


3 ● tezcello
●60ポイント ベストアンサー

> phpでURLをfile_get_contentsやfopenする場合、自サーバだとNo route to hostエラーが出ます。

他のサーバなら問題無く読み込める(オープンできる)のでしょうか?

それもNGなら、

allow_url_fopen が有効になっていないと思います。

http://jp2.php.net/manual/ja/ref.filesystem.php#ini.allow-url-fo...


また、単にドメイン名が引けないだけかも知れませんね。

OSインストール時にホスト名をFQDNで与えていますか?

そうでなければ、

名前解決をしようとすると、ルータに聞くことになる。

ルータが外部のDNSから得た答えはグローバルIPアドレス。

そこに問合せても、だれも答えてくれない(答えるべきなのは自分自身)から結局失敗。

って事ではないですか?


/etc/hosts に

192.168.11.2 www.domain.com

を追加するだけでOKかもしれませんね。

(ホスト名はwwwとしましたがご利用の環境に合わせて下さい)


この辺りで解決しなければ、ネットワーク構成等が知りたいです。

+ router(192.168.11.1)
|
+ server(192.168.11.2)
|
+ PC(192.168.11.ddd)

こんな感じを予想しますがどうでしょうか?

で、質問者さんのコメントより、ping の結果は

server -> localhost OK

server -> 192.168.11.2 ?

server -> domain.com ?

PC -> 192.168.11.2 OK

PC -> domain.com NG

?の部分がどうなっているか知りたいです。(違っていたら修正して下さい)

◎質問者からの返答

/etc/hostsが

192.168.11.9 www.domain.com

のような間違った設定になっていました。

ここを正したところうまく行くようになりました。

問題を切り分けるにもこんなに可能性があったのですね。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ