web-dev-qa-db-ja.com

ドキュメントルートPHP

確認するために、使用しています:

$_SERVER["DOCUMENT_ROOT"]

使用と同じ:/

hTMLで。

例えば。現在のドキュメントが次の場合:

folder/folder/folder/index.php

(HTML)を使用して、roortで開始できます。

/somedoc.html

PHPで同じことを行うには、以下を使用する必要があります。

$_SERVER["DOCUMENT_ROOT"] . "/somedoc.html";

あれは正しいですか?それを行う簡単な方法はありますか?

24
Andrew
 <a href="<?php echo $_SERVER['DOCUMENT_ROOT'].'/hello.html'; ?>">go with php</a>
<br />
<a href="/hello.html">go to with html</a>

これを自分で試してみて、それらがまったく同じではないことを確認してください。

$ _SERVER ['DOCUMENT_ROOT']は、実際のFILE PATHをレンダリングします(自分のサーバーであるc:/ wamp/www /として実行されているコンピューター上で)

HTMLの/は、サーバーのURLのルートをレンダリングします。私の場合は、localhost /

しかし、c:/wamp/www/hello.htmlとlocalhost/hello.htmlは実際には同じファイルです

33
khaverim

ちょうど_/_は、パブリックhtmlフォルダーからWebサイトのルートを参照します。 _DOCUMENT_ROOT_は、Webサイトを含むサーバー上のフォルダーへのローカルパスを指します。

たとえば、EasyPHPをマシンにセットアップしています...

_$_SERVER["DOCUMENT_ROOT"]_はfile:///C:/Program%20Files%20(x86)/EasyPHP-5.3.9/wwwを提供しますが、_/_だけでリンクするファイルはwwwフォルダーに関連します。

(サーバーのルートから)サーバー上のファイルへの絶対パスを指定する場合は、_DOCUMENT_ROOT_を使用できます。 Webサイトのルートからファイルへの絶対パスを指定する場合は、_/_のみを使用します。

5
sachleen

はい、サーバー側では$_SERVER['DOCUMENT_ROOT']はクライアント側の/と同等です。

例:"{$_SERVER['DOCUMENT_ROOT']}/images/thumbnail.png"の値は、サーバー上の文字列/var/www/html/images/thumbnail.pngになります。このパスのローカルファイルには、クライアント側からURL http://example.com/images/thumbnail.pngにアクセスできます。

いいえ、つまり$_SERVER['DOCUMENT_ROOT']の値は/ではなく、サーバーがexample.com/でクライアントに表示するものへのサーバーのローカルパスです

注:$_SERVER['DOCUMENT_ROOT']には末尾の/は含まれません

0
timeSmith