finden Sie aktuelle Verzeichnis Ebene mit PHP
Muss ich require_once eine Datei, die sich in meine Website root-Verzeichnis. Das problem, das ich habe ist, dass ich nicht immer wissen, wie viele Ebenen das root-Verzeichnis ist, von wo meine aktuelle Skript ausgeführt wird. Also muss ich herausfinden, wie viele Verzeichnis-Ebenen muss ich gehen bis zu require_once meine Datei.
Einige Zeit könnte es sein:
require_once '../../file.php';
Und einige Zeit könnte es sein:
require_once '../file.php';
Oder jede andere Anzahl von Verzeichnis-Ebenen.
Wie kann ich berechnen, wie viele "../" ich brauchen, um in das Stammverzeichnis von einem beliebigen Speicherort in einem Unterverzeichnis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine Konstante
SITE_ROOT
in Ihremindex.php
und verwenden Sie es überall Sie brauchen, um den Pfad anzugeben, wie:Hier ist eine einfache Methode, die ich herausgefunden:
Wahrscheinlich nicht so effizient, wie einige der anderen Vorschläge. Aber ich habe es getestet und es funktioniert.
Können Sie
dirname(__FILE__)
um sicher zu sein, dass es immer auf das Verzeichnis die include-Datei liegt__DIR__
Können Sie das Website-Dokument root mit
$_SERVER['DOCUMENT_ROOT']
, und vorausgesetzt, dass nichts in Ihrem code geändert hat, das aktuelle Arbeitsverzeichnis, das Sie abrufen können, die mitgetcwd()
. Mit diesen zwei Pfade, verwenden Sie dann den code in dieser Kommentar um die Differenz zu ermitteln.Gibt es mehrere Optionen. Aber Sie müssen entscheiden, welche geeignet ist in Ihrem Fall:
spl_autoload
set_include_path
include(dirname(__FILE__)."/file.php");
include("$_SERVER[DOCUMENT_ROOT]/file.php");
Für Anwendungen, die einen vordefinierten root-Verzeichnis ist der Weg zu gehen. Für Bibliotheken ist es ebenfalls der bevorzugte Ansatz.
getcwd()
wird wieder das aktuelle Arbeitsverzeichnis string.Können Sie den Pfad angeben, von der Spitze statt, zum Beispiel