2012-02-16 13 views
0

PHPに含まれる相対パスの学習に問題があります。PHPにはどのように相対パスを使用できますか?

index.phpにincludeステートメントを入れて_assetsの2つのフォルダのincludeフォルダにあるfooter.phpを見つけようとしています。

私はSOにここで読んだから、私はそれはと思うだろう:

include('../../_assets/includes/footer.php'); 

私はむしろ、絶対パスを使用したいが、それはどちらか動作させることはできません。


絶対パスがわかります。

echo file_get_contents('http://www.mysite.com/_assets/includes/footer.php'); 

完全に動作します。

+0

index.phpからの相対パスは '../../_ assets/includes/footer.php'と同じですが、その理由はわかりませんうまくいかない?あなたのindex.phpに 'echo getcwd();'を使って現在の作業ディレクトリを見てください。 – Cyclonecode

+1

** WHOA **。 URLをフェッチして* * * local *ファイルをエコーし​​ません。あなたは不要なHTTP要求をディスパッチしています。それは最高で馬鹿で、最悪の場合には時間と資源を無駄にする*無駄です。 – Charles

+0

@Charles、あなたのご意見ありがとうございます。私はそれが最も効率的なやり方ではないことを知っていました。私は初心者であり、テキストを表示するためにエコーが使用されたと思っていて、それはうまくいっていても驚いた。サイトはちょっと混乱しますが、基本的には3つのサイトがあり、すべてのCSSとインクルードファイルには中央のフォルダが必要です。また、サイト全体からリンクする良い方法もあります。サーバー。あなたはより良い方法を提案できますか? – Evo2

答えて

2

私はあなたが例えば、ドキュメントルートを指している定数を定義することをお勧め絶対パスを使用するには:

define('PATH_SITE', '/path/to/www/'); 

またはWindows上:

define('PATH_SITE', 'C:\\path\\to\\www\\'); 

その後あなたが得るためにそのパスを使用します適切なのは次のとおりです。

include_once(PATH_SITE . 'assets/whatever.php'); 

また、組み込みのPHP変数$_SERVER['DOCUMENT_ROOT']しかし、Windowsサーバーでは薄れているのを見たことがあります

+0

私は、ルートフォルダのPHPファイル内の定義を置くのですか? – Evo2

+0

最初のincludeを(おそらく 'index.php')始めるファイルに置いてください。これは、それ以降のすべてのインクルードで利用できるようになります – konsolenfreddy