2011-09-16 9 views
0

$_SERVER["SERVER_NAME"];$_SERVER["DOCUMENT_ROOT"];は常に同じディレクトリに解決されますか?彼らはいないシナリオはありますか?

EDIT:

明確にするために、私はこれらは私がSERVER_NAMEはいつもDOCUMENT_ROOTにマップされますのみかどうかを立証しようとしている同じthing-ではありません知っています。すなわち、それらの各々に従うことによって、サーバファイルシステム上の同じ物理的位置に常に到着する。

+0

したがって、基本的に「SERVER_NAMEとDOCUMENT_ROOTは異なるのですか? –

+0

@ Jonathan-編集内容 – Yarin

+0

@ヤリン。ちょうどそれが他の人にどのように見えるかをあなたに気づかせたいと思ったありがとう。 –

答えて

2
  • SERVER_NAMEは、イン​​ターネットvieableアドレスです - stackoverflow.com
  • DOCUMENT_ROOTは、現在のディレクトリへの絶対URLです - サーバー/データ/ stackoverflowの中/ ...

しかし、はい、それはすることを目指してDOES同じディレクトリ(毎回)

+0

私は知っています。それらが異なるものであるかどうかを尋ねるのではなく、同じ実際のディレクトリを指しているかどうかだけです。例えばDOCUMENT_ROOTに公開されている公開ファイルは、常にSERVER_NAME /ファイルにありますか? – Yarin

+0

@ヤリン:はい彼らは – genesis

+0

OK - あなたの答えを更新すると、私の質問に答えなかったように、私はあなたに信用を与えることができます – Yarin

1

SERVER_NAMEは実際のドメイン名でなければなりません。 REQUEST_URIはユーザーが入力したパスを提供します。ウェブサーバーまたはPHP自身が提供するコンテンツではないため、でもそれは本当に$some_relative_path

DOCUMENT_ROOTに何があるかに依存していることについては

)ファイル内のtはあなたのウェブサイトは、実際にサーバに住んファイル場所への絶対サーバパスです。 DOCUMENT_ROOTは他のPHPファイルをインクルードするのに便利ですが、接続するクライアントに公開されることは決してありません。セキュリティ上のリスクです。

何らかの理由で誰かがサーバ上で/をドキュメントルートとして設定しない限り、どのシナリオでも同じであってはいけません。それはおそらく非常に悪い考えです。なぜなら、システムファイルさえもWebに公開されるからです。

+0

@ Cfreak-私が確立しようとしているのは、彼らがいつも同じ場所を指しているかどうかであり、同じものかどうかではありません。通常、SERVER_NAMEへのナビゲート時に提供される索引ファイルはDOCUMENT_ROOTにあります。それがそうでない場合にインスタンスを見つけることを試みるだけです。 – Yarin

0

SERVER_NAMEは、スクリプトが実行されたサーバーの名前です。また、仮想ホスト名にすることもできます。

DOCUMENT_ROOTは、実行しているスクリプトへのパスです。何らかの種類のURL書き換えを実行している場合は、SERVER_NAMEと同じ値になる可能性があります。

関連する問題