Hitta PHP-dokumentroten

PHP-dokumentroten är mappen där ett PHP-skript körs. När man installerar ett skript behöver webbutvecklare ofta känna till dokumentroten. Även om många sidor skriptade med PHP körs på en Apache-server körs vissa under Microsoft IIS på Windows. Apache innehåller en miljövariabel som heter DOCUMENT_ROOT, men IIS gör det inte. Som ett resultat finns det två metoder för att hitta PHP-dokumentroten.

Hitta PHP-dokumentets rot under Apache

Istället för att skicka teknisk support till dokumentroten och vänta på att någon ska svara, kan du använda ett enkelt PHP-skript med getenv (), som ger en genväg på Apache-servrar till dokumentroten.

Dessa få kodrader returnerar dokumentroten.

Hitta PHP-dokumentets rot under IIS

Microsofts Internet Information Services introducerades med Windows NT 3.5.1 och har inkluderats i de flesta Windows-utgåvor sedan dess - inklusive Windows Server 2016 och Windows 10. Det ger inte en genväg till dokumentroten.

För att hitta namnet på det nuvarande exekverande skriptet i IIS börjar du med den här koden:

skriv ut getenv ("SCRIPT_NAME");

vilket ger ett resultat som liknar:

/product/description/index.php

vilket är skriptets fulla väg. Du vill inte ha den fulla sökvägen, bara namnet på filen för SCRIPT_NAME. För att få det, använd:

skriv ut realpath (basnamn (getenv ("SCRIPT_NAME")));

vilket ger ett resultat i detta format:

/usr/local/apache/share/htdocs/product/description/index.php

För att ta bort koden som hänvisar till den platsrelaterade filen och komma fram till dokumentroten, använd följande kod i början av alla skript som behöver känna till dokumentroten.

$ Localpath = getenv ( "SCRIPT_NAME");

$ Absolutepath = realpath ($ localPath);

// fixa Windows snedstreck

$ Absolutepath = str_replace ( "\\", "/", $ absolutepath);

$ Docroot = substr ($ absolutepath, 0, strpos ($ absolutepath,

$ Localpath));

// ett exempel på användning

inkluderar ($ docroot "/ includes / config.php".);

Denna metod, även om den är mer komplex, körs på både IIS- och Apache-servrar.