Не работает include

korpus

злой бобёр
В корне сервера есть файл 3.shtml:
Код:
<?php
include("template/top.php");
?>
В файле /template/top.php находится файл шаблона. В это случает всё нормально. Но если поместить файл 3.shtml в какую-нибудь папку (html/3.shtml) и переписать подключение шаблона так:
Код:
<?php
include("../template/top.php");
?>
то уже фал не подключается. Что это может быть?
 

korpus

злой бобёр
Код:
<?php
include("template/top.php");
?>
ошибка в начале. Вот так надо.

Вопрос по второму подключению, когда из папки путь идёт на один уровень вверх, а потом в папку template
 

weregod

unserializer
положите в константу или куда ещё путь до шаблонов и используйте пути только относительно него.
 

korpus

злой бобёр
Возможно проблема в том, что это файл с расширением shtml и для него нельзя указывать родительскую директорию с двумя точками. Когда я ложу подключаемые файлы в туже директорию, то все исполняется без проблем.
 

Фанат

oncle terrible
Команда форума
Если это файл с PHP кодом, то это файл РНР.
И расширение не имеет никакого значения.
И указывать можно что угодно и как угодно.

Единственное условие - указывать ПРАВИЛЬНЫЙ путь, который ведет к файлу, а не на деревню к дедушке.
Если при файл не подключился, то РНР напишет ошибку.
В которой все подробно написано - кто куда чего подключал и как исправить.

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

korpus

злой бобёр
Скрипты на сервере делал не я. Но вот что я в них увидел:
PHP:
<? include("./inc/search.php"); ?>
Здесь точка указывает на один уровень вверх... Мне казалось, что две точки должны указывть на уровень вверх, а точка должна указывать на текущий каталог, но здесь определённо точка указывает на один уровень вверх.
 

tz-lom

Продвинутый новичок
korpus
нет,здесь тебе как бы говорится что getcwd() != dirname(__FILE__)
 

korpus

злой бобёр
tz-lom
там такого нету, но видно, что вы догадываетесь о причине
 

korpus

злой бобёр
ссылка
Точка ставится для того, чтобы в поиске не участвовала директория include_path, а поиск файла сразу начинался в директории, в которой расположен скрипт. Наверное, это может повысить быстродействие.
 

tz-lom

Продвинутый новичок
korpus
не в быстродействии суть,а в предсказуемости поведения
не явно указывая откуда может взяться файл рискуешь тем что его не будет рядом,но будет он где то очень далеко,и совсем не с тем чем надо
 

korpus

злой бобёр
При задании относительных путей поиск будет осуществляться относительно первого запущенного скрипта, а не подключаемых далее. Моё утверждение выше экспериментальным путём подтвердить не смог :( Точка вообще ни на что не влияет.
 
Сверху