Если вы работаете с большим проектом, где подключается очень много файлов из различных папок, наверняка вам причиняло неудобство при указании относительных или абсолютных путей в require_once(). Эту проблему можно решить раз и навсегда, указав директории для поиска "php библиотек". Воспользуемся функцией ini_set(), чтобы указать путь поиска библиотек.
Допустим, в корне сайта у нас лежат:
index.php libs/test1.php libs/test2.php
Допустим в файле index.php нам нужно сделать “инклуд” файлов “test1.php” и “test1.php”, которые лежать в папке libs. Конечно, когда у нас всего 3 файла легко прописать в require_once() относительные или абсолютные пути. Давайте укажем директорию для поиска библиотек и подключим эти 2 файла без указания абсолютных и относительных путей:
<?php ini_set('include_path', getenv(DOCUMENT_ROOT)."/libs"); require_once('test1.php'); require_once('test2.php'); ?>
Благодаря указанию пути php без проблем находит библиотеки, лежащие в каталоге libs. При необходимости можно указать несколько каталогов, в которых php будет искать файлы при вызове функции require_once(). Продемонстрирую это ниже.
Наши файлы:
index.php libs1/test1.php libs2/test2.php
Теперь у нас библиотеки лежат в разных директориях. Добавим обе директории для поиска:
<?php //Определяем, каким должен быть разделитель для путей // ; - для Windows систем // : - для *nix систем $sep = getenv('COMSPEC')? ';' : ':'; //Определяем папку корня сайта $dr = getenv('DOCUMENT_ROOT'); //Cклеиваем пути: путь 1 + разделитель + путь 2 $path = $dr.'/libs1'.$sep.$dr.'/libs2'; //Выполняем функцию ini_set() ini_set('include_path', $path); //Проверяем require_once('test1.php'); require_once('test2.php'); ?>
Вот и все. Удачи всем в разработках!