86

スクリプトが実行されている場所のドメイン名を取得したいと考えています。PHPでそれをどのように行うことができますか?私はそれを見て、この情報$_SERVER['HTTP_HOST']を含んでいます。$_SERVER['SERVER_NAME']その変数は常に機能しますか? どちらか一方を使用する必要がありますか?

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

4

2 に答える 2

90

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

ここを参照してください: PHP $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME']、man ページを正しく理解していますか?

この記事も参照してください: 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

于 2011-03-23T11:57:28.590 に答える
7

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

  • HTTP サーバーはこれらの値を PHP に渡します (そうでないものは知りません)
  • コマンドライン (CLI) 経由でスクリプトにアクセスしていない

しかし、私の記憶が正しければ、これらの値はある程度偽造される可能性があるため、それらに依存しないことをお勧めします。

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

# Virtual host
setEnv DOMAIN_NAME example.com

そしてPHPでそれを読んでください

// PHP
echo getenv(DOMAIN_NAME);

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

于 2011-03-23T12:00:46.263 に答える