Например есть папка «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 (;)) возникают проблемы при отладке скриптов на локальной машине)