Is it a good idea to use $_SERVER[‘DOCUMENT_ROOT’] in includes?

I’ve seen cases where $_SERVER['DOCUMENT_ROOT'] is not set or is not what you would expect (i.e. not set in CLI or old IIS, or invalid in certain CGI setups).

For that reason you can use dirname(__FILE__) to obtain the path of the script that line is called in. You can then reference relative paths from there e.g.

include dirname(__FILE__) . '/../../other/file.php';

I go with the above method when the directory structure of the files is known and is not subject to change.

If DOCUMENT_ROOT is not available, the following is a suitable replacement:

substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME']));

Leave a Comment