Problembeschreibung
Schauen wir uns zunächst die Verzeichnisstruktur unseres Beispiels und den Inhalt dieser drei Dateien an.
A.Php
<? phpinclude './c/d.php'
B.Php
<? phpDefine ('__ B', 'Dies ist ein Test');C/D.Php
<? phpinclude '../b.php'var_dump(__b);
Die D.Php -Datei im Rahmen des C -Verzeichnisses bezieht sich auf die B.PHP -Datei unter ihrem oberen Verzeichnis. Es wird keine Probleme haben, wenn C/D.PHP getrennt ausgeführt wird.
Wenn sich A.PHP jedoch auf C/D.Php in demselben Verzeichnis wie B bezieht, wird es ein Problem geben.
Es meldet einen Fehler, dass die Datei nicht vorhanden ist
denken
Die allgemeine Bedeutung ist, dass nach A.PHP C/D.PHP in A.Php einführt, der Pfad include '../b.php' relativ zu A.Php ist und der relative Pfad für A.Php nicht existiert, so dass dieses Problem auftritt.
Wenn eine Datei an mehreren Stellen referenziert werden kann, ist es recht einfach, Probleme zu haben, und dann können wir dieses Problem mit absoluten Pfaden problemlos lösen.
Verwenden Sie absolute Pfade, um das Problem zu lösen
Wenn wir die Datei in Folgendes ändern
A.Php
<? phpinclude __dir __. '/../b.php'; var_dump (__ b);
B.Php
<? phpDefine ('__ B', 'Dies ist ein Test');C/D.Php
<? phpinclude __dir __. '/../b.php'; var_dump (__ b);
Dies wird in Bezug auf den absoluten Pfad der Datei geändert. __DIR__ ist eine vordefinierte magische Konstante, die in Php5.3 vorhanden ist, was das Verzeichnis angibt, in dem sich die Datei befindet. Dann schreiben wir dies, um den absoluten Pfad zu schreiben, der bei der Ausführung von A.Php und C/D.Php normal ausgeführt werden kann. Wenn dirname(__FILE__) anstelle von __DIR___ vor php5.3 verwendet wird
Zusammenfassen
Das obige dreht sich alles um das Problem der relativen Pfade im PHP und um die Verwendung absoluter Pfade. Ich hoffe, es wird für alle hilfreich sein, die PHP verwenden und vermeiden, wieder in die Grube der relativen Wege in PHP einzutreten.