Как не переписывать пути в аргументе include() ?

PNS

Новичок
Как не переписывать пути в аргументе include() ?

Документы сайта размещены в каталогах до 3-го уровня вложения. Файлы header.inc и footer.inc (одинаковы для всех страниц) находятся на самом верхнем уровне в дереве каталогов. В файлах, находящихся на верхнем уровне, работает оператор include ("header.inc");, в файлах второго уровня- include ("../header.inc");, в файлах третего уровня include ("../../header.inc");.

Есть ли способ, не переписывая пути в операторе include(), обеспечить срабатывание вложений в файлах находящихся на разных уровнях дерева каталогов?
 

Cid

...двинутый новичок
Если UNIX, то в каждом каталоге можно прописать symlink с одинаковым именем, но для разного уровня вложенности.

Модифицировать переменную include_path не стоит (сам запутаешься в том, какой из каталогов у тебя более приоритетный).
 

Cid

...двинутый новичок
Очень не хочется давать тебе неправильный совет (типа, только чтобы написать)...

Некрасиво, но работать будет - сделай в каждом из подкаталогов под одному фалу header.inc и в каждом из них пропиши include('../header.inc') или include('../../header.inc') в зависимости от уровня. Тогда в любом файле в одном из этих каталогов достаточно написать include('./header.inc') (P.S. если много файлов и точку со слэшом прописать не реально, то оставь как есть, должно сработать. Лично я предпочитаю явно указывать пути).

А вообще, в будущем рекомендую планировать структуру, чтобы избегать подобных извращений.
 

Cid

...двинутый новичок
Не, ну тогда можно с таким же успехом проитись по всем файлам и заменить пути для includ'ов. Вопрос-то в том, чтобы этого не делать... Я так понимаю, что файлов очень много.
 

DimbIch

Новичок
Aknichy
$_SERVER["SITE_HTMLROOT"]
хм.....а почему я такой переменной не вижу у себя ???
ты где такую взял ????
 

Aknichy

Новичок
phpinfo();
все - эти пременные (окружения PHP по-мему зовуться) "протестированы" там.
 

DimbIch

Новичок
print_r($_SERVER) не нашел если честно.....
phpinfo(); - $_SERVER["SITE_HTMLROOT"] - не нашел

скажи конкретно где взял ?
 

Фанат

oncle terrible
Команда форума
Aknichy
Вынужден тебя огорчить.
Это не стандартная переменная, а, судя по всему - какая-то самопальная.
Стандартной же в пхп является DOCUMENT_ROOT, которую не надо прописывать руками, а которая берется автоматом из настройки апача.
 

Aknichy

Новичок
Автор оригинала: Фанат
Aknichy
Вынужден тебя огорчить.
Это не стандартная переменная, а, судя по всему - какая-то самопальная.
Стандартной же в пхп является DOCUMENT_ROOT, которую не надо прописывать руками, а которая берется автоматом из настройки апача.
ммм даа :/...
Спасибо, буду иметь ввиду
 

Фанат

oncle terrible
Команда форума
Aknichy
на будущее рекомендую пользоваться стандартными.
список можно посмотреть здесь:
http://ru2.php.net/manual/en/reserved.variables.php#reserved.variables.server

А точнее, пользоваться можно любыми - , например, с удовольствием пользуюсь зеноновской HOME
Но вот рекомендовать, конечно, другим, имеет смысл только то, что поддерживается.

Впрочем, у криворукого хостера бывает и документ рут через одно место.
Впрочем, какой смысл сидеть у криворукого хостера?
 

Frol

Новичок
Cid
Модифицировать переменную include_path не стоит (сам запутаешься в том, какой из каталогов у тебя более приоритетный).
поставить нужную include_path и есть одно из лучших решений.
и если кто-то в этом путается -- это его проблема.
не надо в таком случае советовать.
 

Cid

...двинутый новичок
Одно из лучших решений - это грамотно планировать структуру директорий и принципов подключений файлов. Затыкание дыр, что скорее всего имеет место в данном случае - это вынужденная мера. Так что все средства хороши.
 

SelenIT

IT-лунатик :)
... а использование абсолютных путей, основанных на правильной include_path, ИМХО, является одним из элементов "грамотного планирования..." (далее по тексту) :)
 

Frol

Новичок
Затыкание дыр, что скорее всего имеет место в данном случае - это вынужденная мера. Так что все средства хороши.
тоесть PEAR является "затыканием дыр" и неграмотно спланирован?
 

Cid

...двинутый новичок
Frol
Читайте ориджин. Не думаю, что флейм хороший способ для продолжения дискуссии. Откройте отдельный тред - в нем и будем спорить (если есть желание).
 

Frol

Новичок
Cid
совет типа "у меня не получается, не делай и ты так" не является флэймом?
 

Cid

...двинутый новичок
Выражение "я не советую" и "у меня не получается" - одно и то же?

</flame>
 
Сверху