PHP-Include-Relativpfad-Verwirrung
Beim Versuch, eine PHP-Datei aus einem relativen Pfad einzubinden, können Entwickler trotz der Einstellung des Include auf unerwartete Fehler stoßen Pfad richtig eingeben. Dieser Artikel befasst sich mit den möglichen Ursachen solcher Fehler und bietet eine Lösung unter Verwendung der Konstanten DIR und dirname.
Das Problem:
Das Problem eines Benutzers Die Codestruktur umfasst zwei Dateien, /root/connect.php und /root/update/test.php. connect.php versucht, „../config.php“ einzuschließen, vorausgesetzt, dass sich config.php in /root befindet. Allerdings schließt test.php connect.php ein und legt den Include-Pfad auf „.:/root“ fest, was theoretisch die Einbindung von ../config.php aus /root ermöglichen sollte.
Die Fehler:
Obwohl der richtige Include-Pfad festgelegt ist, kann der Code config.php nicht finden und gibt PHP-Warnungen aus, die darauf hinweisen, dass die Datei nicht existiert. Das ist verwirrend, weil der relative Pfad zu config.php (/root/config.php) innerhalb des etablierten Include-Pfads liegt.
Die Lösung:
Der Schlüssel zu Die Lösung dieses Problems liegt im Verständnis des Verhaltens relativer Pfade in PHP. Während include relative Pfade unterstützt, ist der Ausgangspunkt immer das aktuelle Verzeichnis der Datei, die die include-Anweisung ausführt. In diesem Fall wird connect.php in /root/connect.php ausgeführt. Wenn also versucht wird, „../config.php“ einzuschließen, sucht es im Verzeichnis /root/connect.php/, das keine Konfiguration enthält .php.
Um diese Einschränkung zu überwinden, kann die Konstante DIR verwendet werden, um auf das Verzeichnis der aktuellen Datei zu verweisen. Durch Verketten des Dateinamens mit DIR erhalten Sie den absoluten Pfad zur gewünschten Datei.
Code mit Lösung:
connect.php:
include(dirname(__DIR__).'/config.php');
Dieser Code verwendet den absoluten Pfad dirname(__DIR__).'/config.php', um config.php einzuschließen und sicherzustellen, dass es unabhängig vom aktuellen Verzeichnis gefunden wird.
Test.php:
set_include_path(".:/root"); include "connect.php";
Mit dieser Änderung wird test.php erfolgreich connect.php einbinden, das wiederum config.php korrekt einbinden wird Standort.
Schlussfolgerung:
Das Verständnis des Verhaltens relativer Pfade und die Verwendung der Konstanten DIR und dirname ermöglicht es Entwicklern, Dateien aus relativen Pfaden genau einzubinden , auch wenn mit komplexen Verzeichnisstrukturen gearbeitet wird.
Das obige ist der detaillierte Inhalt vonWarum schlägt mein PHP-Include trotz korrektem Include-Pfad fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!