Heim > Backend-Entwicklung > PHP-Tutorial > Warum schlägt mein PHP-Include trotz korrektem Include-Pfad fehl?

Warum schlägt mein PHP-Include trotz korrektem Include-Pfad fehl?

Mary-Kate Olsen
Freigeben: 2024-11-28 06:55:10
Original
708 Leute haben es durchsucht

Why Does My PHP Include Fail Even With a Correct Include Path?

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');
Nach dem Login kopieren

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";
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage