web-dev-qa-db-ja.com

PHPドメイン名を取得

可能性のある複製:
HTTP_Host vs. SERVER_NAME

こんにちは、

スクリプトが実行されている場所のドメイン名を取得したい。 PHPでどのようにできますか? $_SERVER['HTTP_Host']$_SERVER['SERVER_NAME']にこの情報が含まれていることがわかります。その変数は常に機能しますか?

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

76
Francisc

同様の質問が以前にstackoverflowで尋ねられました。

こちらをご覧ください: PHP $ _SERVER ['HTTP_Host'] vs. $ _SERVER ['SERVER_NAME']、マニュアルページを正しく理解していますか?

この記事も参照してください: http://shiflett.org/blog/2006/mar/server-name-versus-http-Host

HTTP_Hostを使用し、HTTP_Hostが設定されていない場合にのみSERVER_NAMEにフォールバックすることをお勧めします。彼は、SERVER_NAMEは次のようなさまざまな理由でサーバー上で信頼できない可能性があると述べました。

  • dNSサポートなし
  • 誤った設定
  • 負荷分散ソフトウェアの背後

ソースhttp://discussion.dreamhost.com/thread-4388.html =

81

あなたの質問に答えるために、これらは以下の限り機能するはずです:

  • HTTPサーバーはこれらの値をPHPに渡します(知らないことはわかりません)
  • コマンドライン(CLI)からスクリプトにアクセスしているnot

しかし、私が正しく覚えていれば、これらの値はある程度偽造される可能性があるため、それらに依存しないことが最善です。

私の個人的な好みは ドメイン名を環境変数として設定する Apache2仮想ホストです:

# Virtual Host
setEnv DOMAIN_NAME example.com

そして PHPで読む

// PHP
echo getenv(DOMAIN_NAME);

ただし、これはすべての状況に当てはまるわけではありません。

7
xzyfer