2013-10-15 4 views
5

パスは異なりますが含まれますどのようにPHPには、 "../" 対 "/../"

require("../classes/M8.php"); 

require("/../classes/H8.php"); 

の違いは何ですか?

+8

"/"はファイルシステムのルートであり、その上には何もないので、2番目の例は機能しません。絶対パス(__DIR__定数付き)だけを使用すれば、どんなものが含まれるのかを正確に知ることができます。 –

+0

@Mirtes、 "/"はPHPが失敗する前にインクルードされたファイルのためのいくつかの異なるパスを探しますので、動作します。 __DIR__のおかげで、私が持っていたすべての問題を解決しました。 – user1463822

答えて

4

/は、ルートディレクトリを指します。これは絶対パスとして知られています。それ以外のものは、現在のフォルダに相対的です。これは相対パスと呼ばれます。

IBMは違いhereを説明:

絶対パス名が下方/(ルート)ディレクトリからディレクトリまたはファイルの完全な名前を表します。ファイルシステムで作業している場所にかかわらず、絶対パス名を指定することによって、常にディレクトリまたはファイルを見つけることができます。絶対パス名は、ルートディレクトリを表すシンボルであるスラッシュ(/)で始まります。パス名/ A/D/9は、9の絶対パス名です。最初のスラッシュ(/)は、検索の開始場所である/(ルート)ディレクトリを表します。残りのパス名は、A、D、そして最後に9になります。

相対パス名は、フルパス名とは異なり、現在の作業ディレクトリに基づいてディレクトリまたはファイルを指定します。相対パス名の場合は、ファイルシステム階層の上に移動するために、ドットドット(..)を使用することができます。ドットドット(..)は親ディレクトリを表します。相対パス名は現在のディレクトリで始まるパスを指定するので、スラッシュ(/)で始まらない。相対パス名は、現在のディレクトリ内のファイル名、またはファイルシステム内の現在のディレクトリのレベルの上または下のファイルまたはディレクトリのパス名を指定するために使用されます。 Dが現在のディレクトリの場合、10をアクセスするための相対パス名はF/10です。ただし、絶対パス名は常に/ A/D/F/10です。また、3にアクセスするための相対パス名は../../B/3です。

は、インスタンスのために、この構造体を使用している、とMyScript.phpで働いていた想像:

Home 
    -- Foo 
    -- Example.php 
    -- Bar 
    -- Scripts 
     -- MyScript.php 

あなたはFooフォルダ内からExample.phpを含めるしたい場合は、あなたが指定することができ、次のいずれか

../../Foo/Example.php /* Relative path: ..Bar/..Home (Root)/Foo/Example.php */ 
14

/..は、サーバーのルートに相対的なパスです。
../は、現在のスクリプトフォルダからの相対パスです。

詳細情報が必要な場合があります。

あなたは、サーバー上のフォルダにある場合は、言う:

/usr/local/apache2/www/example.php

その後 example.phpでの参照は絶対として作ることができます/usr/local/apache2/hidden/credentials.php

または、現在のファイルとの相対パスを使用して同じファイルにアクセスできます:../hidden/credentials。 php。 ../の各セットは、サーバーのフォルダ構造の1つ上のディレクトリに移動します。

+0

きれいに置く、+1。 –