Der PHP-Dokumentenstamm ist der Ordner, in dem ein PHP-Skript ausgeführt wird. Bei der Installation eines Skripts müssen Webentwickler häufig den Dokumentstamm kennen. Obwohl viele mit PHP geschriebene Seiten auf einem Apache-Server ausgeführt werden, laufen einige unter Microsoft IIS unter Windows. Apache enthält eine Umgebungsvariable namens DOCUMENT_ROOT, IIS jedoch nicht. Daher gibt es zwei Methoden zum Auffinden des PHP-Dokumentenstamms.
Anstatt eine E-Mail an den technischen Support für den Dokumentenstamm zu senden und auf eine Antwort zu warten, können Sie ein einfaches PHP-Skript mit getenv () verwenden, das auf Apache-Servern eine Verknüpfung zum Dokumentenstamm bereitstellt.
Diese wenigen Codezeilen geben den Dokumentstamm zurück.
Die Internetinformationsdienste von Microsoft wurden mit Windows NT 3.5.1 eingeführt und sind seitdem in den meisten Windows-Versionen enthalten, einschließlich Windows Server 2016 und Windows 10. Sie enthalten keine Verknüpfung zum Dokumentstamm.
Beginnen Sie mit folgendem Code, um den Namen des aktuell ausgeführten Skripts in IIS zu ermitteln:
print getenv ("SCRIPT_NAME");
was ein Ergebnis ähnlich dem folgenden zurückgibt:
/product/description/index.php
Das ist der vollständige Pfad des Skripts. Sie möchten nicht den vollständigen Pfad, sondern nur den Namen der Datei für SCRIPT_NAME. Um es zu bekommen, benutze:
print realpath (basename (getenv ("SCRIPT_NAME")));
was ein Ergebnis in diesem Format zurückgibt:
/usr/local/apache/share/htdocs/product/description/index.php
Verwenden Sie den folgenden Code am Anfang eines Skripts, das den Dokumentstamm kennt, um den Code zu entfernen, der auf die standortbezogene Datei verweist, und zum Dokumentstamm zu gelangen.
$ localpath = getenv ("SCRIPT_NAME");
$ absolutepath = realpath ($ localPath);
// Die Windows-Schrägstriche korrigieren
$ absolutepath = str_replace ("\\", "/", $ absolutepath);
$ docroot = substr ($ absolutepath, 0, strpos ($ absolutepath,
$ localpath));
// ein Anwendungsbeispiel
include ($ docroot. "/ includes / config.php");
Obwohl diese Methode komplexer ist, wird sie sowohl auf IIS- als auch auf Apache-Servern ausgeführt.