スクリプトが実行されている場所のドメイン名を取得したいと考えています。PHPでそれをどのように行うことができますか?私はそれを見て、この情報$_SERVER['HTTP_HOST']
を含んでいます。$_SERVER['SERVER_NAME']
その変数は常に機能しますか? どちらか一方を使用する必要がありますか?
ありがとうございました。
スクリプトが実行されている場所のドメイン名を取得したいと考えています。PHPでそれをどのように行うことができますか?私はそれを見て、この情報$_SERVER['HTTP_HOST']
を含んでいます。$_SERVER['SERVER_NAME']
その変数は常に機能しますか? どちらか一方を使用する必要がありますか?
ありがとうございました。
同様の質問が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 サポートなし
- 設定ミス
- 負荷分散ソフトウェアの背後にある
あなたの質問に答えるために、これらは次の限り機能するはずです:
しかし、私の記憶が正しければ、これらの値はある程度偽造される可能性があるため、それらに依存しないことをお勧めします。
私の個人的な好みは、apache2 仮想ホストでドメイン名を環境変数として設定することです。
# Virtual host
setEnv DOMAIN_NAME example.com
そしてPHPでそれを読んでください:
// PHP
echo getenv(DOMAIN_NAME);
ただし、これはすべての状況に当てはまるわけではありません。