Finding the PHP Document Root

Finding the PHP Document Root on Apache and IIS Servers

The PHP document root is the folder where a PHP script is running. When installing a script, web developers often need to know the document root. Although many pages scripted with PHP run on an Apache server, some run under Microsoft IIS on Windows. Apache includes an environment variable called DOCUMENT_ROOT, but IIS doesn't. As a result, there are two methods for locating the PHP document root.

Finding the PHP Document Root Under Apache

Instead of emailing tech support for the document doot and waiting for someone to respond, you can use a simple PHP script with getenv (), which provides a shortcut on Apache servers to the document root.

 

 <?php 
 //Gets the document root 
 $root = getenv("DOCUMENT_ROOT") ; 
 Echo $root; 
 ?> 

These few lines of code return the document root.

Finding the PHP Document Root Under IIS

Microsoft's Internet Information Services was introduced with Windows NT 3.5.1 and has been included in most Windows releases since then—including Windows Server 2016 and Windows 10. It does not supply a shortcut to the document root. 

To find the name of the currently executing script in IIS, begin with this code:

print getenv ("SCRIPT_NAME");

which returns a result similar to:

/product/description/index.php

which is the full path of the script. You don't want the full path, just the name of the file for SCRIPT_NAME. To get it use:

print realpath(basename(getenv("SCRIPT_NAME")));

which returns a result in this format:

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

To remove the code referring to the site-relative file and arrive at the document root, use the following code at the beginning of any script that needs to know the document root.

$localpath=getenv("SCRIPT_NAME");
$absolutepath=realpath($localPath);
// fix the Windows slashes
$absolutepath=str_replace("\\","/",$absolutepath);
$docroot=substr($absolutepath,0,strpos($absolutepath,
$localpath));
// an example of use
include($docroot."/includes/config.php");

This method, although more complex, runs on both IIS and Apache servers.