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

Сергей123

Новичок
Дмитрий Попов
>> А в чем проблема?
Да, собственно, на данном этапе своего развития я ППКС StUV + замечание "Но ведь файл с настройкми всеравно придётся инклюдить с путями типа ../../" от Kelkos'а.
Посему надеялся узнать что-то новое... Пока тщетно.
 

Сергей123

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

Kelkos

Сам себе программер
Гораздо нужнее, чтобы не приходилось делать никаких исправлений в путях при переносе (по каким-либо причинам) произвольного скрипта "на другую глубину".
Как представлю, что какой нить "передвинутый полуадмин" тусует файлы, так волосы дыбом во всех частях тела.
Ну да неплохое обсуждение получилось.
$CMS_ROOT=realpath(dirname("__FILE__")."/../"); - ИМХО возможно лучшее решение, и достаточно гибко.
 

Кром

Новичок
>$CMS_ROOT=realpath(dirname("__FILE__")."/../"); - ИМХО возможно лучшее решение, и достаточно гибко.

Это не решение, это бред.

>Но ведь файл с настройкми всеравно придётся инклюдить с путями типа ../../

Ничего такого делать не надо. Надо написать в index.php (файл через который идут все обращения) функцию, которая будте определять все пути. Заодно можно добавить функций типа
GetConfigPath($conf_file = '');
GetTplPath($conf_file = '');
Которые будут возвращать полный путь к файлу.
В чем тут еще может быть проблема?
 
=)
1. Многоуважаемый Кром, скажите пожалуйста - а если у меня нет одного файла index.php, через который идут ВСе обращения, а таких файлов несколько, мне убить себя, да?
А то я админку, дурак такой, обычно отдельно от наружки храню, да и снаружи файлов не мало остаётся...
2. > функцию, которая будте определять все пути.
Изо забавнее.... И как она будет её определять? )))
 

Нечто

Психолог РНРClub
.htacсess:
Код:
php_value include_path  ".:/home/user/www/inc:/home/user/inc"
То есть сначала ищет в своей директории, потом в inc в корне, а потом в inc выше document_root (опция).
Файл с настройками: require_once('config.inc.php'); - все.
 

Kelkos

Сам себе программер
Нечто
вот только не надо сюда .htacсess: приплетать. Это фигня, когда куча настроек в .htacсess:. Я, например, не уверен, что на хостинге, который купил заказчик (а купил по принципу "как можно дешевле") можно будет это прописать в .htacсess:
 

Нечто

Психолог РНРClub
Kelkos, мне Вас жалко.
На некоторых дебильных хостингах действительно приходится все делать через ж*.
 
Угу... а потом еще и в ./pear/ и еще на всякий случай ./pear/inc/ потом.....
Только не понятно - зачем привязываться к пути в .htaccess, да еще и заставлять php при каждом инклюде проверять по три пути, да еще и следить, что бы названия файлов в ./inc/ не пересекались с ./www/, когда все равно при любом переносе все равно надо менять настройки.
 

Нечто

Психолог РНРClub
Дмитрий Попов
следить, что бы названия файлов в ./inc/ не пересекались с ./www/
Вышеприведенный пример - то, чем пользуюся я. Вне www в inc у меня лежат файлы ядра и пр., в конкретной субдиректории - пересечение невозможно.
все равно при любом переносе все равно надо менять настройки
Стояла задача обратиться к конфигу из директории любого уровня вложенности - данный метод позволяет этого добиться.
 

Кром

Новичок
1. Многоуважаемый Кром, скажите пожалуйста - а если у меня нет одного файла index.php, через который идут ВСе обращения, а таких файлов несколько, мне убить себя, да?
А то я админку, дурак такой, обычно отдельно от наружки храню, да и снаружи файлов не мало остаётся...
2. > функцию, которая будте определять все пути.
Изо забавнее.... И как она будет её определять? ))
1. А в чем, собственно, соль этого иронического сообщения?
У тебя несколько разных файлов? Ну, ты не один такой. Любителей плодить множество точек входа в систему более чем достаточно. В последствии это создаст массу радостных моментов при отладке и внесении измений в фильтры вывода и т.д.

2. Так же как и всегда. Прописывается путь к папке с конфигурацией, после чего производим конкатенацию с основным путем к системе.
 
1. Да-да-да. Все, кто используют больше чем один файл входа на проект - не умеют проектировать приложения.

2. Как он прописывается? Что конкретно подразумевается под "конкатенацию с основным путем к системе."

3." Надо написать в index.php функцию"
А "функция" это принципиально, да? Т.е. если у меня такой функции нет, а просто дефайнятся необходимые константы - это плохо?
 

Кром

Новичок
>2. Как он прописывается? Что конкретно подразумевается под "конкатенацию с основным путем к системе."

Предположим простейший вариант
Есть путь http://localhost/index.php
В нем ты вычисляешь физический путь на сервере.
$path['docroot'] = '/usr/home/www/';
Прописываешь путь к конфигу (ручками):
$path['cofig'] = 'confg/';
И пишешь функцию:
function GetConfigPath($conf_file = '')
{
return $path['docroot'].$path['cofig'].$conf_file;
}
Далее во всех файлах пишешь:
include GetConfigPath('config.php');
 

Кром

Новичок
>Чем это лучше, чем если я вначале скрипта напишу

Тем что ты не сможешь переносить этот файл в структуре сайта без внесения изменений в пути. Т.е. в данном случае ты создал дополнительную зависимость.
 
Два вопроса:
1. Если у тебя один общий файл-точка входа. Зачем городить весь этот огород - когда ты можешь подключить конфиг один раз и прямо в нём?
2. Если у тебя не один общий файл-точка входа, то ты точно так же вносишь ту же зависимость, но уже прямо в нём.
3. Ты понимаешь, что то, что пишу я, абсолютно не противоречит тому, что пишешь ты?
 
Сверху