10
Important to note that relative paths are also subjective.
ie:
<?php
#bar.php
require('../foo.php');
?>
/dir/bar.php /foo.php # prints a /dir/foo.php # prints b /dir/other/ # empty dir
$ pwd > / $ php dir/bar.php > / + ../foo.php == /foo.php > prints a $ cd dir $ php bar.php > /dir + ../foo.php = /foo.php > prints a $ cd other $ php ../bar.php > /dir/other + ../foo.php = /dir/foo.php > prints b
This can create some rather confusing situations, especially if you have many files with releative references and multiple possible places that can act as an "entry point" that controls what the relative path is relative to.
In such situations, one should compute the absolute path manually based on a fixed known, ie:
<?php
require( realpath(dirname(__FILE__) . '/../foo.php') )
or
<?php
require( SOMECONSTANT . '/relative/path.php' );
or
<?php
require( $_SERVER['DOCUMENT_ROOT'] . '/relative/path.php' );