Важно отметить, что относительные пути также субъективны.
то есть:
<?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
Это может создать некоторые довольно запутанные ситуации, особенно если у вас много файлов с относительными ссылками и множеством возможных мест, которые могут выступать в качестве «точки входа», которая контролирует относительный путь.
В таких ситуациях нужно вычислять абсолютный путь вручную на основе фиксированного известного, то есть:
<?php
require( realpath(dirname(__FILE__) . '/../foo.php') )
или
<?php
require( SOMECONSTANT . '/relative/path.php' );
или
<?php
require( $_SERVER['DOCUMENT_ROOT'] . '/relative/path.php' );