2012-08-13 6 views
13

だけを確認するために、使用されていますドキュメントルートPHP

$_SERVER["DOCUMENT_ROOT"] 

を使用するのと同じ:HTML内/

を。

例:現在の文書がある場合:

folder/folder/folder/index.php 

私はroortで開始する(HTMLで)使用することもできます

/somedoc.html 

とPHPで同じことをするために私が使用しなければならないでしょう:

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

これは間違いありませんか?それを行う簡単な方法はありますか?

答えて

18
<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']実際のファイルパスをレンダリングする(私のコンピュータ上で、それは自身のサーバーだとして実行されている、C:/ WAMP/www /の

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

が、C:/wamp/www/hello.htmlとはlocalhost/hello.htmlは、実際に同じファイル

+1

これは、上記のハイパーリンクとは別の問題であるinclude()に使用したい場合に使用します。 –

+0

これは私が言うつもりだったので、私の答えを投稿する理由はありません。 –

+0

インクルードとは何が違うのですか? – Andrew

5

ちょうど/パブリックのHTMLフォルダから、Webサイトのルートを指しているDOCUMENT_ROOT。 Webサイトを含むサーバー上のフォルダへのローカルパスを指します。

例えば、私はマシン上でEasyPHPを設定している

...

$_SERVER["DOCUMENT_ROOT"]は私にfile:///C:/Program%20Files%20(x86)/EasyPHP-5.3.9/wwwを与えますが、私はちょうど/とにリンク任意のファイルは、私のwwwフォルダからの相対になります。

サーバー上のファイル(サーバーのルートから)への絶対パスを指定する場合は、DOCUMENT_ROOTを使用できます。 Webサイトのルートからファイルへの絶対パスを指定する場合は、ただ/を使用してください。

-2

最も簡単な方法は、良いサイト構造を持ち、定数として書き込むことです。

DEFINE("BACK_ROOT","/var/www/"); 
+1

私はその古いことを知っていますが、私はこれを見つけました。これを行うPHP定義のサーバ定数、コード、CPU、メモリの無駄使い – DarkMukke

+0

あなたはあなたがどの程度深く(フォルダ単位で)インクルードしていても、これはあなたがスクリプト、ルートを定義するために使用されるコード以外。 これを使用して、今日の多くのプログラマーが使用しているジェリーリギング方法と戦うことができます。 –

+5

はい、そういう形でスクリプトがシステムや場所に依存するようになりますが、決してそうではありません。アプリは移植可能でなければなりません – DarkMukke

関連する問題