В своих наработках я использую абсолютные пути, а именно через суперглобальный массив $_SERVER['DOCUMENT_ROOT'];
Однако слышал что это плохая практика и некоторые хостинги не воспринимают этот суперглобальный массив.
Для того, чтобы себя подстраховать и убавить себе лишней работы в случае такой неприятной ситуации поступил так:
define('ROOT_SITE', $_SERVER['DOCUMENT_ROOT']);
Таким образом я всегда могу подправить исходный код, изменив значение на http://mysite.com. (адрес выбран случайно)
Вопрос: что вы посоветуете по данному вопросу?
Теперь вопрос эстетики...
Например мы имеем такую индексную страницу: (код не имеет значения)
require ROOT_SITE.'/modules/navigation/navi.php';
require ROOT_SITE.'/modules/contacts.php';
require ROOT_SITE.'/tpl/footer.html';
Вроде бы симпатичные адреса. Но саму константу в индексном файле не хочется определять, а подключать бибилиотечный файл в виде
'./modules/navigation/navi.php';
как-то неэстетично.
Вопрос: что вы посоветуете по второму вопросу? (Вопрос личных предпочтений)
Спустя 7 минут, 41 секунда (27.07.2012 - 13:03) AlmazDelDiablo написал(а):
Если index.php находится в корне сайта, то путь к нему будет путем и к корню сайта. Соот-но делаем так:
define( 'ROOT_SITE', dirname( __FILE__ ) );
Спустя 6 минут, 7 секунд (27.07.2012 - 13:09) NierRa написал(а):
Спасибо.
Чем отличается использование $_SERVER['DOCUMENT_ROOT']; от dirname(__FILE__);
Имеется ввиду какие подводные камни могут встретится на пути их использования? Т.е какие у них плюсы и минусы между собой и если dirname(__FILE__) лучше, то зачем нужен $_SERVER['DOCUMENT_ROOT'];
Чем отличается использование $_SERVER['DOCUMENT_ROOT']; от dirname(__FILE__);
Имеется ввиду какие подводные камни могут встретится на пути их использования? Т.е какие у них плюсы и минусы между собой и если dirname(__FILE__) лучше, то зачем нужен $_SERVER['DOCUMENT_ROOT'];
Спустя 3 минуты, 33 секунды (27.07.2012 - 13:13) killer8080 написал(а):
Все зависит от используемого sapi. $_SERVER['DOCUMENT_ROOT'] всегда будет работать правильно на апаче с модулем, в режиме командной строки она по определению отсутствует, ввиду отсутствия вебсервера (CLI), в fast-cgi может содержать неверный путь, если у админов руки произрастают из области тазовых костей 
Если пишите универсальный скрипт, который должен работать в любой среде, или скрипт запускаемый кроном, то лучше отказаться $_SERVER['DOCUMENT_ROOT'] и использовать предопределенные константы __FILE__ (php <5.3) или __DIR__ (php>=5.3), так как в случае с CLI, getcwd() так же может возвращать неверный путь.

Если пишите универсальный скрипт, который должен работать в любой среде, или скрипт запускаемый кроном, то лучше отказаться $_SERVER['DOCUMENT_ROOT'] и использовать предопределенные константы __FILE__ (php <5.3) или __DIR__ (php>=5.3), так как в случае с CLI, getcwd() так же может возвращать неверный путь.
Спустя 49 секунд (27.07.2012 - 13:13) AlmazDelDiablo написал(а):
dirname( __FILE__ ) хорош тем, что ему плевать на то, является ли этот каталог на самом деле корневым или нет. Например, у вас сайт лежит не в $_SERVER['DOCUMENT_ROOT'], а в каком-нибудь подкаталоге (http://mysite.com/site1/site2), то $_SERVER['DOCUMENT_ROOT'] вернет путь до mysite.com, а dirname — до того места, где лежит index.php.
Спустя 3 минуты, 49 секунд (27.07.2012 - 13:17) NierRa написал(а):
Благодарю за развернутые ответы
Спустя 3 минуты, 34 секунды (27.07.2012 - 13:21) NierRa написал(а):
Цитата |
а dirname — до того места, где лежит index.php. |
Как бы глупо это не звучало, но вдруг по какой-либо причине index.php отсутствует и есть только index.html. Что будет в этом случае?
Спустя 2 минуты, 21 секунда (27.07.2012 - 13:23) killer8080 написал(а):
Цитата (NierRa @ 27.07.2012 - 13:21) |
и есть только index.html |
и причем здесь тогда php?
Спустя 1 минута, 41 секунда (27.07.2012 - 13:25) AlmazDelDiablo написал(а):
Где пропишите dirname( __FILE__ ), до того места и вернет путь. Даже если вы такой извращенец, что занимаетесь добавлением php-кода в .html файлы ^^
Спустя 3 минуты, 56 секунд (27.07.2012 - 13:29) NierRa написал(а):
Цитата |
и причем здесь тогда php? |
Цитата |
Даже если вы такой извращенец, что занимаетесь добавлением php-кода в .html файлы ^^ |
Я не извращенец

Не хочу надоедать но все же:
dirname(__FILE__); преобразуется в путь с \ слешами
$_SERVER['DOCUMENT_ROOT']; преобразуется в путь с / слешами
Чем это обусловлено?
Спустя 8 минут, 9 секунд (27.07.2012 - 13:37) killer8080 написал(а):
Файлы .html по умолчанию сервер отдает в исходном виде, если конечно ты не заставишь через настройки, обрабатывать как скрипты.
Как уже сказали выше эти константы указывают на файл в котором запрошены, это значит например в таком коде
index.php
./libi/func.php
Как уже сказали выше эти константы указывают на файл в котором запрошены, это значит например в таком коде
index.php
include './lib/func.php';
./libi/func.php
echo __FILE__;покажет подключенный файл func.php, а не index.php. Об этом важно помнить при их использовании, и объявлять свою костанту на их основе, в файле лежащем в корне движка
Спустя 2 минуты, 29 секунд (27.07.2012 - 13:39) killer8080 написал(а):
Цитата (NierRa @ 27.07.2012 - 13:29) |
Не хочу надоедать но все же: dirname(__FILE__); преобразуется в путь с \ слешами $_SERVER['DOCUMENT_ROOT']; преобразуется в путь с / слешами Чем это обусловлено? |
Начина с 5-х версий php на вин платформе можно использовать прямые слеши в путях, как *никс. Чтоб не париться всегда используй *никс стиль - /.
_____________
Задача на корректную обработку данных (мое решение)
http://eu.battle.net/sc2/ru/profile/2212951/1/IIIIIIIIIIII/