39

A. これは何をしますか?

require ("./file.php");

B.これと比べて?

require ("file.php");

(それアップワンディレクトリではありません..そうなるでしょう)

require ("../file.php");
4

7 に答える 7

48

./現在のディレクトリです。これはほとんど と同じですfile.phpが、多くの場合 (これを含む)、PHP がファイルを探す標準的な場所はチェックせず、代わりに現在のディレクトリのみをチェックします。

PHP ドキュメントから(最後の文に注目してください):

含めるファイルは、最初に現在の作業ディレクトリに関連する各 include_path エントリで検索され、次に現在のスクリプトのディレクトリで検索されます。たとえば、include_path がライブラリで、現在の作業ディレクトリが /www/ で、include/a.php が含まれていて、そのファイルに "b.php" が含まれている場合、b.php は最初に /www/libraries/ で検索され、次に次で検索されます。 /www/include/. filename が ./ または ../ で始まる場合、現在の作業ディレクトリでのみ検索されます。

于 2009-02-23T21:15:20.293 に答える
9

最初のバージョンでは、直接実行されたファイルと比較して、内部メカニズムにファイルを含めるように強制します。たとえば、あなたが持っている

index.php

// directly executed script (php -f index.php or from a browser)
include 'second.php';

second.php

// This is included relatively to index.php
// Actually, it is first searched relatively to include_path, then relatively
// to index.php
include './third.php';

third.php

// This is included relatively to second.php ONLY. It does not search
// include_path
return "foo";
于 2009-02-23T21:15:03.150 に答える
6

短い答え

そうです、それは 1 つのディレクトリではありません。A. は現在のディレクトリを指し、.. は親ディレクトリを指します。

つまり、./file.php と file.php は、PHP では機能的に同等です。ドキュメントの関連ページは次のとおりです。 http://us.php.net/manual/en/wrappers.file.php

より長い答え

ただし、このコンテキストで同じように機能するからといって、常に同じであるとは限りません。

*nix シェル環境で操作しているときに、実行可能ファイルの名前を入力すると、シェルは PATH ディレクトリを検索しますが、CWD や現在のディレクトリは検索しません。

したがって、myprogram.php (これは PHP CLI ファイルになります) という名前のファイルがあるディレクトリにいる場合は、次のように入力します。

myprogram.php

プログラムが実行可能かどうかは問題ではありません。シェルは /bin/、/usr/bin/ などでファイルを検索しますが、./ や現在のディレクトリは検索しません。

ディレクトリをPATHに追加せずにそのプログラムを実行するには、次のように入力する必要があります

./myprogram

つまり、./ はより明示的です。これは、「探しているファイルがここにある」ことを意味し、./ は、「ファイルは、ファイルを探しているプログラムのどこかにある必要がある」ことを意味します。

于 2009-02-23T21:21:17.627 に答える
5

ドット/スラッシュは、include_path 設定で指定されたパスをさらに検索するのではなく、現在のディレクトリでのみファイルを検索するように強制します。

于 2009-02-24T19:46:15.540 に答える
4

単純に、現在のディレクトリにのみファイルを含めるか、ファイルが存在しない場合は失敗するように php に指示しています。

「indexcommon3.php」形式を使用していて、ファイルが存在しない場合、php はそれを include_path システム変数で検索します。

参考までに、 http://www.php.net/manual/en/function.include.phpを使用できます。

于 2009-02-23T21:16:48.917 に答える
0

現在のディレクトリ に明示的に名前を付けています。

于 2009-02-23T21:16:09.060 に答える