абсолютный или относительный

Kelkos

Сам себе программер
Только примеры из практики.
Очень часто DOCUMENT_ROOT != корню вэб. Очень часто сайт муузят с хостинга на хостинг. очень часто работает не только index.php в корне но иногда скрипты в подкаталогах. Проще в каждом отдельнозапускающемся скрипте писать:
define ('Root_Dir','../../');
include (Root_Dir.'init.php');
чем
include ($_SERVER['DOCUMENT_ROOT'].'www.newsite.ru/'.'init.php');
и переправлять при переносе на новый хостинг, в котором путь будет другим.
Есть ещё вариант генерить путь из полного пути к скрипту, НО не проще ли определить смещение в реальный DOCUMENT_ROOT и не париться?
 

Фанат

oncle terrible
Команда форума
эти глупости даже комментировать нет смысла.
если автор сам не понимает, то медицина здесь бессильна.

кому не лень - может попытаться, впрочем.
 

StUV

Rotaredom
проще/правильнее в одном месте дефайнить абсолютные webroot и srcroot и при переносе на новый хостинг их редактировать
чтобы потом не было траблов с вложенными инклудами
 

Kelkos

Сам себе программер
Но ведь файл с настройкми всеравно придётся инклюдить с путями типа ../../ :) тогда какая разница?

-~{}~ 27.05.05 13:34:

эти глупости даже комментировать нет смысла.
если автор сам не понимает, то медицина здесь бессильна.

кому не лень - может попытаться, впрочем.
ФАНАТ, я былбы рад придумать что то другое. но нефига.
если тебя смущает "www.newsite.ru" так это реальный пример.. хм. на многих хостингах для создания домена третьего уровня достачтоно создать подобный каталог и всё.. готово. так вот. но 'DOCUMENT_ROOT' получается на уровень выше. вот с этим и борюсь. Плюс очень часто клиенты пытаются сэкономить и одну из папок в купленом хостинге названачают как дополнительный домен 2-го уровня. вот и начинется кардебалет. Вообщем, сделав так, как я написал мне удалось избавиться от таких дурацких проблем.

-~{}~ 27.05.05 13:36:

сорри.. ступил.. для создания домена 3-го уровня надо создать каталог не www.newsite.ru, а например newdomen.newsite.ru ..хех..
 

Кром

Новичок
>но 'DOCUMENT_ROOT' получается на уровень выше. вот с этим и борюсь.

Тебе когда нибудь приходило в голову, что можно определить свой "DOCUMENT_ROOT", причем сделать это динамически? Так что вообще не придется прописывать какие либо пути.
Или для тебя эта задача из разряда непостижимых?
 

Kelkos

Сам себе программер
блин. люди! я не знаю ГДЕ потом окажется этот сайт.. что там можно менять, а что нет! я даже незнаю КТО будет им рулить и пр. вот я и пытаюсь делать независимым.
Вообще, меня больше поразло нежелание "столпов пхп" принять этот как вариант? Может это имеет какието "подводные камни?"
Тебе когда нибудь приходило в голову, что можно определить свой "DOCUMENT_ROOT",
Ээх.. я просто делаю "относительный" DOCUMENT_ROOT..
ну да ладно.. Фанат, убей этот топик. надоело уже.
 

Сергей123

Новичок
не надо убивать
Кром,
мне объясни, пожалуйста, про
>> динамически определить свой
(я вполне серьёзно)
 
Kelkos
Даю наводку (чисто для размышлений, но не для тупого копирования):

(файл ./cmf/config.inc.php):

$CMS_ROOT=realpath(dirname("__FILE__")."/../");
if($CMS_ROOT) define('DIRECTORY_ROOT',$CMS_ROOT);
 

Сергей123

Новичок
Дмитрий Попов
Как ты подключаешь config.inc в файлах, лежащих "на разных глубинах"?
 

SiMM

Новичок
> Как ты подключаешь config.inc в файлах, лежащих "на разных глубинах"?
У него может быть auto_prepend_file в .htaccess'е ;)
Либо один index.php, через который подключается всё остальное.
 

Доктор

Новичок
Интересно, а какие доводы у тех, кто за:

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

Я как раз вижу больше проблем и именно заморочек при полных путях.
 

SiMM

Новичок
> Интересно, а какие доводы у тех
Работает всегда и именно ожидаемым образом.
 

Kelkos

Сам себе программер
$CMS_ROOT=realpath(dirname("__FILE__")."/../");
if($CMS_ROOT) define('DIRECTORY_ROOT',$CMS_ROOT);
Что то мне подсказывает, что мы говорим о практически одинаковых яйцах. просто смотрим на них с разных сторон. %)
Но вот if($CMS_ROOT) вызывает подозрение.. нафиг это тут? Константа DIRECTORY_ROOT в любом случае должна же определяться? Ведь далее делжно гдето быть include (DIRECTORY_ROOT.'/cat/file.php'); ? Или тут хитрый план?
 

SiMM

Новичок
> Что то мне подсказывает, что мы говорим о практически одинаковых яйцах.
/home/bla-bla-bla/file и file - это два, абсолютно разных яйца. И если первое - путь абсолютный, то второе - относительный. Наличие в абсолютном пути приблуд типа /home/bla-bla-bla/path/../file (..) не делает его относительным. ИМХО.
 

Доктор

Новичок
>>Работает всегда и именно ожидаемым образом.

А с относительными путями нет?
 
Kelkos
Если хочешь показаться слишком умным, то больше молчи.
(чисто для размышлений, но не для тупого копирования)
Это были две строчки из разных файлов, да. И если есть if, значит где-нибудь вполне возможно есть else.

Бресь Сергей
Как ты подключаешь config.inc в файлах, лежащих "на разных глубинах"?
А в чем проблема?
Ну вот наводка (опять, один из возможных вариантов):
require_once(dirname(__FILE__)."/../../config.inc.php");
 
Сверху