Чтобы была возможность указывать одинаковые пути к подключаемым файлам независимо от нахождения файла со скриптом, в котором этот путь нужно получить, можно указать этот путь в директиве include_path.
Например есть папка «includes», а в ней файлы для подключения. Задав необходимые параметры для include_path, из скрипта любого файла вашего сайта можно будет получить нужный файл этой папки просто прописав его имя: require_once 'файл.расширение'.

include_path определяется в главном файле конфигурации php.ini. В ней указывается список директорий, в которых функции require, include, fopen(), file(), readfile() и file_get_contents() ищут файлы. Список директорий (папок) разделяется двоеточием в Unix или точкой с запятой в Windows.

Если вы используете сервер Apache. то директиву include_раth можете указать в глобальном файле конфигурации сервера (который обычно называется httpd.conf) или в файле конфигурации для конкретного каталога (который обычно называется .htaccess) воспользовавшись следующим синтаксисом:
php_value  include_path  ".:/usr/local/liЬ/php-libraries"

Если у вас нет прав доступа, необходимых для редактирования файла php.ini, или не хотите менять конфигурационный файл при переносах сайта - можете задать пути включения файлов, на время выполнения скрипта, прямо из сценария с помощью функции set_include_path().

Например нам нужно подключить файлы находящиеся в папке includes, которая в корне сайта:
$path = 'includes';
$result = set_include_path(get_include_path() . PATH_SEPARATOR . $path);
где $path – путь к нужной папке относительно точки входа (файла index.php)
Можно указать абсолютный путь:
$path = $_SERVER['DOCUMENT_ROOT']. '/includes'; 
Путь относительно текущей папки (с этим скриптом):
. PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../includes')
где realpath() - преобразует относительный путь в абсолютный.
Также можно указывать вложенную папку, например $path = 'includes/folder';

После этого, для подключения файлов, можно просто указывать их названия:
require_once 'class.php';

Вызвав get_include_path() мы добавили в начало списка данные, которые уже были в include_path,
потом идет разделитель и нужный путь.

С помощью установки пути в include_path, из какого бы файла и папки не вызывался нужный файл, путь не изменится.



Можно также использовать ini_set (одно и тоже):
// Работает с версии PHP 4.3.0
set_include_path('/usr/lib/pear');

// Работает во всех версиях PHP
ini_set('include_path', '/usr/lib/pear');

Можно подключить несколько нужных директорий. На примере автозагрузчика классов:
set_include_path( get_include_path()
. PATH_SEPARATOR . 'folder1'
. PATH_SEPARATOR . 'folder2'
. PATH_SEPARATOR . 'folder3');
spl_autoload_register( function( $class ) {
include $class . '.php';
});

Указывать директиву include_path в файле .htaccess не рекомендуется по следующим причинам:
- вы затрете пути, которые уже были в системе (например, каталог PEAR);
- при переносе сайта к другому хостеру придется изменять .htaccess, т.к. в директиве include_path указаны абсолютные пути к каталогам;
- из-за использования разных разделителей каталогов (в Unix (:), в Windows (;)) возникают проблемы при отладке скриптов на локальной машине)