Статьи  : 

Задача про многоуровневый include

14 августа 2012, 13:51

Сегодня мы рассмотрим вот такую задачку. Пусть у нас есть три скрипта в следующей структуре:

index.php
include/user.php
lib/auth.php


В index.php имеем следующее:

include('include/user.php');


А в user.php нам нужно подключить библиотеку auth.php. Как нужно писать?

Вот так?

include('../lib/auth.php');


Казалось, прописываем путь относительно этого файла. На самом же деле – относительно index.php! То есть вот так:

include('lib/auth.php');


Если же будет сложная система, где всё друг в друга подключается, да еще и на разных уровнях, то путаница гарантирована. Решение: следует применять абсолютные пути от корня файловой системы. То есть заводится некоторая константа вот такого вида:

define(ROOT_PATH, '/var/www/site_name');


и далее везде используется.

Данное замечание актуально для самописных систем. В CMS и фреймворках, как правило, это уже продумано.