De root van het PHP-document is de map waarin een PHP-script wordt uitgevoerd. Bij het installeren van een script moeten webontwikkelaars vaak de document root kennen. Hoewel veel pagina's met PHP-scripts op een Apache-server worden uitgevoerd, worden sommige pagina's onder Microsoft IIS op Windows uitgevoerd. Apache bevat een omgevingsvariabele genaamd DOCUMENT_ROOT, maar IIS niet. Dientengevolge zijn er twee methoden voor het lokaliseren van de PHP-document root.
In plaats van technische ondersteuning per e-mail naar de document root te e-mailen en te wachten tot iemand reageert, kunt u een eenvoudig PHP-script met getenv () gebruiken, dat een snelkoppeling op Apache-servers naar de document root biedt.
Deze paar regels code retourneren de document root.
Microsoft's Internet Information Services werd geïntroduceerd met Windows NT 3.5.1 en is sindsdien opgenomen in de meeste Windows-releases, inclusief Windows Server 2016 en Windows 10. Het biedt geen snelkoppeling naar de document root.
Begin met deze code om de naam van het script dat momenteel wordt uitgevoerd in IIS te vinden:
print getenv ("SCRIPT_NAME");
die een resultaat retourneert vergelijkbaar met:
/product/description/index.php
dat is het volledige pad van het script. U wilt niet het volledige pad, alleen de naam van het bestand voor SCRIPT_NAME. Gebruik om het te krijgen:
print realpath (basename (getenv ("SCRIPT_NAME")));
die een resultaat in deze indeling retourneert:
/usr/local/apache/share/htdocs/product/description/index.php
Om de code die verwijst naar het site-relatieve bestand te verwijderen en aan de document root te komen, gebruikt u de volgende code aan het begin van elk script dat de document root moet kennen.
$ Localpath = getenv ( "SCRIPT_NAME");
$ Absolutepath = realpath ($ localPath);
// repareer de Windows-schuine strepen
$ Absolutepath = str_replace ( "\\", "/", $ absolutepath);
$ Docroot = substr ($ absolutepath, 0, strpos ($ absolutepath,
$ Localpath));
// een voorbeeld van gebruik
include ($ docroot "/ includes / config.php".);
Deze methode, hoewel complexer, werkt op zowel IIS- als Apache-servers.