Ich habe diese Ordnerstruktur in meinem PHP-Projekt. (Dies ist wie in Finsternissen gezeigt)
-MySystem
+Code
+Data_Access
-Public_HTML
+css
+js
+Templates
-resources
Wenn ich diesen Code versuche
echo $_SERVER['DOCUMENT_ROOT']
Ausgabe ist
D: / Arbeitsbereich
Wie kann ich den Pfad zu RootDirectory des Systems ( MySystem
) abrufen, ohne den Ordnernamen fest zu codieren?
__DIR__
. Es ist relativ zur Datei selbst. Wenn sich also in einem Include in einem Unterverzeichnis befindet, wird nicht nur Ihr Stammverzeichnis zurückgegeben.Wenn du das sagst
enthält diesen Pfad:
Dann
D:
ist es das, wonach Sie suchen, nicht wahr? In diesem Fall können Sie die Zeichenfolge durch Schrägstriche auflösen und die erste zurückgeben:Dadurch wird das Stammverzeichnis des Servers ausgegeben.
Update: Wenn Sie die Konstante
DIRECTORY_SEPARATOR
anstelle des fest codierten Schrägstrichs ('/'
) verwenden, funktioniert dieser Code auch unter Windows.Update 2: Die
$_SERVER
globale Variable ist nicht immer verfügbar. Zum Beispiel in der Kommandozeile (cli). Also solltest du__DIR__
statt verwenden$_SERVER['DOCUMENT_ROOT']
.__DIR__
Gibt den Pfad der PHP-Datei selbst zurück.quelle
__DIR__
anstelle von verwenden$_SERVER['DOCUMENT_ROOT']
.Verwenden Sie die PHP-Funktion:
getcwd()
Ruft das aktuelle Arbeitsverzeichnis ab.
quelle
Ich möchte darauf hinweisen, wie Wordpress damit umgeht:
Da Wordpress im gesamten Web sehr häufig verwendet wird und auch lokal einwandfrei funktioniert, habe ich großes Vertrauen in diese Methode.
quelle
Du kannst es versuchen:
$_SERVER['PATH_TRANSLATED']
Zitat:
Quelle: php.net/manual
quelle
quelle
Zusammenfassung
In diesem Beispiel wird davon ausgegangen, dass Sie immer wissen, wo sich der Apache-Stammordner '/ var / www /' befindet, und dass Sie versuchen, den nächsten Ordnerpfad zu finden (z. B. '/ var / www / my_website_folder'). Dies funktioniert auch über ein Skript oder den Webbrowser, weshalb zusätzlicher Code vorhanden ist.
Code PHP7
Beispiel
Ausgabe:
Einzelheiten:
Grundsätzlich wird zuerst versucht, DOCUMENT_ROOT abzurufen, wenn es '/ var / www /' enthält, und es dann verwendet. Andernfalls wird das aktuelle Verzeichnis (das im Projekt häufig vorhanden ist) abgerufen und der nächste Pfadwert basierend auf der Anzahl des $ root-Pfads abgerufen. Hinweis: Es wurden rtrim-Anweisungen hinzugefügt, um sicherzustellen, dass der Pfad in allen Fällen mit einem '/' endet. Es wird nicht geprüft, ob es größer als / var / www / sein muss. Es kann auch / var / www / als mögliche Antwort zurückgeben.
quelle