新しく質問する

$_SERVER["HTTP_HOST"]と$_SERVER["SERVER_NAME"]の違い(というか意味合い)は?

役に立った:3件
  • 質問者:m_etc
  • 投稿日時:2008/08/19 20:19
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

phpのバージョンは、5.1.6で、OSのバージョンはCentOS4.4です。

お聞きしたいのですが、
$_SERVER["HTTP_HOST"]と$_SERVER["SERVER_NAME"]の違い(というか意味合い)はなんでしょうか?

phpinfoでみても、同じの場合したことがみたことがないもので。

ご存じの方いらっしゃいましたら、お教えいただければ幸いです。

よろしくお願いいたします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:3件)
  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:taloo
  • 回答日時:2008/08/21 09:09

$_SERVERはサーバーの環境変数やPHPの情報を保存した配列です。
$_SERVERのうち、環境変数はgetenv()でも取得できます。

$_SERVER["SERVER_NAME"]で取得できる名前は
Apacheの場合はhttpd.confで、
UseCanonicalNameがOnになっているときに、ServerNameで指定された値が使われます。
UseCanonicalNameがOffになっていると、ドメイン名やIPアドレスになります。
UseCanonicalNameがOffになっていて、http://127.0.0.1:8001/のようにポート指定でアクセスした場合は、ポート番号は除かれます。

HTTP_HOSTはHTTPでアクセスしたときのホスト名、つまりドメイン名+ポート番号がそれに当たります。
(厳密には違うかも知れませんが、、、)
http://www.ietf.org/rfc/rfc2616.txt

VirtualHostを使ってポート指定でアクセスすると違いが出ますが、
デフォルトでUseCanonicalNameはOffになっていますし、ホスティングサービスではOnにする理由もありません。
http://httpd.apache.org/docs/2.0/ja/mod/core.htm …
(「これが有用な場合の例は、」の段落参照。主にイントラネット向け?)

、、、と書くのはいいとして、私自身、UseCanonicalNameやホスト名の意味や使い方をわかっていません。
こうすれば違いが出るということだけですが、
ご参考まで。

通報する

  • 参考になった:0件

No.1ベストアンサー10pt

  • 回答者:yambejp
  • 回答日時:2008/08/20 11:13

$_SERVERとはhttpサーバーの環境変数です
なのでPHPは直接は関係ありません。

HTTP_HOSTはブラウザからリクエストされた名前で
SERVER_NAMEはサーバー側が自分で持っている名前です。
HTTP_HOSTがないような場合はSERVER_NAMEは自分で持っている
名前をブラウザに返すようでおもにCGIなどに利用されます。

設定によっては別の名前を返しますが、ほとんどの場合
SERVER_NAMEはHTTP_HOSTと同値になるようですね

通報する

  
このQ&Aは役に立ちましたか?(役に立った:3件)

このページのトップへ

Facebook公式ページ

公式Twitter