まず、この例のディレクトリ構造とこれら 3 つのファイルの内容を見てみましょう。
a.php
<?php include './c/d.php'
b.php
<?php define('__B', 'this is a test');
c/d .php
<?php include '../b.php'; var_dump(__B);
c ディレクトリ配下の d.php ファイルは、その親ディレクトリ配下の b.php ファイルを参照しているため、c/d.php 単体で実行する場合はエラーは発生しません。ただし、b と同じディレクトリにある a.php が c/d.php を参照すると問題が発生し、ファイルが存在しないというエラーが報告されます。
考え:
おそらく、a.php が c/d.php を a.php に導入した後、'../b. をインクルードすることを意味します。 path php' は a.php に対する相対パスであり、a.php への相対パスが存在しないため、この問題が発生します。ファイルが複数の場所で参照される可能性がある場合に相対パスを使用すると問題が発生しやすくなりますが、絶対パスを使用するとこの問題を簡単に解決できます。
絶対パスを使用して問題を解決してください
a.php
<?php include __DIR__.'/../b.php'; var_dump(__B);
b. php
<?php define('__B', 'this is a test');
c/d.php
<?php define('__B', 'this is a test');
このように、ファイルの絶対パスが参照され、 __DIR__
は、php5.3 以降で使用できる事前定義されたマジック定数で、このファイルが配置されているディレクトリを示します。これを使用して、a.php および c/d を実行するときに絶対パスを書き込むことができます。 php php5.3以前の場合は、__DIR____
の代わりにdirname(__FILE__)
が使用されていましたが、正常に実行できます。
概要: PHP では、絶対パスは、ターゲットの場所に直接到達するディレクトリ内の絶対場所を指します。通常はドライブ文字から始まるパスであり、相対パスはベースになります。必要なファイルを見つけます (相対パスはターゲット ディレクトリからの相対パスです)。
上記の内容は参考用です。
推奨チュートリアル: PHP ビデオ チュートリアル
以上がPHPの相対パスと絶対パスの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。