Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Корневой каталог сайта 
:(
    Опции темы
artsb
Дата 11.9.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: нет
Всего: 64



Всем привет!

Такой вопрос: как получить корневой каталог сайта?

Я получаю его из массива $_SERVER['DOCUMENT_ROOT']. Но недавно на каком-то форуме прочитал о том, что это работает не на всех серверах. Так ли это? Если да, то как тогда его получить?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Sunvas
Дата 11.9.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



Есть несколько вариантов. Первый:
Код

$root=dirname( __FILE__ );


Второй:
Код

$root=getcwd();



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
artsb
Дата 11.9.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: нет
Всего: 64



И оба варианта вернут КОРНЕВОЙ КАТАЛОГ САЙТА? И оба будут РАБОТАТЬ ВЕЗДЕ?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Sunvas
Дата 11.9.2008, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



artsb, насколько я понял, Вам нужен полный путь к папке с сайтом? Т.е. например /home/username/public_html/site.ru/ ? Если да, то на оба вопроса, ответ да.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
americanets
Дата 12.9.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Цитата(Sunvas @  11.9.2008,  17:30 Найти цитируемый пост)
dirname( __FILE__ );



но не стоит забывать что это не рут дирректория а полный путь к папке с вызываемым скриптом 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Sunvas
Дата 12.9.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



А что понимается под "рут" директорией?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
americanets
Дата 12.9.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Код

$_SERVER['DOCUMENT_ROOT']


Код

/home/www/ 


к примеру


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Sunvas
Дата 12.9.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



И все-равно это полный путь к сайту. Выполните мои команды в index.php - получите тоже самое.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
artsb
Дата 12.9.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: нет
Всего: 64



Ладно, спасибо за советы.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
americanets
Дата 15.9.2008, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Sunvas, тогда излагайся есней smile 
например есть конфиг в нем  что - то вроде этого нужно писать в зависимости от задачи


Код

if ( isset($_SERVER['DOCUMENT_ROOT']) and !empty($_SERVER['DOCUMENT_ROOT']) ) {
    if (substr($_SERVER['DOCUMENT_ROOT'], -1) == "/" or substr($_SERVER['DOCUMENT_ROOT'], -1) == "\\") {
        $_SERVER['DOCUMENT_ROOT'] = substr($_SERVER['DOCUMENT_ROOT'], 0, strlen($_SERVER['DOCUMENT_ROOT']) - 1);
    }
} else {
    $_SERVER['DOCUMENT_ROOT'] = dirname(__FILE__);
}



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Sunvas
Дата 15.9.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



americanets, не очень понял, что Вам ясней объяснить..

ЗЫ. Эта конструкция улыбнула:
Код

$_SERVER['DOCUMENT_ROOT'] = substr($_SERVER['DOCUMENT_ROOT'], 0, strlen($_SERVER['DOCUMENT_ROOT']) - 1);


А зачем еще и strlen($_SERVER['DOCUMENT_ROOT']) ?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
americanets
Дата 15.9.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Sunvas, это старенький кусок кода и вправду пора его пересмотреть smile


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
sTa1kEr
Дата 16.9.2008, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(artsb @  11.9.2008,  16:03 Найти цитируемый пост)
Но недавно на каком-то форуме прочитал о том, что это работает не на всех серверах. 

По сути верно, разные сервера могут писать туда совсем не те пути, которые ожидает программист. К примеру, если в качестве веб сервера используется IIS с рутовой директорией C:\wwwroot\, а сам сам сайт на виртуальном хосте по пути C:\sites\mydomain.ru\, то в DOCUMENT_ROOT все равно попадет C:\wwwroot\, что приведет к ошибкам.

Самый надежный вариант предложил Sunvas с константой __FILE__. Просто кладем в рутовую директорию файлик, к примеру, root.php
Код

define('ROOT', dirname(__FILE__));

А далее просто инклюдим этот файл и используем константу ROOT. Может быть единственная проблема при таком подходе - это получить путь к скамому root.php, но как правило нету никаких проблем подключить этот файлик по относительному пути.

Однако, если вы используете для своего проекта исключительно апач, и не собираетесь этот скрипт распространять, то DOCUMENT_ROOT-а будет более чем достаточно.

Это сообщение отредактировал(а) sTa1kEr - 16.9.2008, 13:57
PM MAIL   Вверх
artsb
Дата 16.9.2008, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: нет
Всего: 64



Вы тут без меня общаетесь smile

Спасибо всем за советы.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
artsb
Дата 20.9.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: нет
Всего: 64



Продолжу тему.

Для получения root директории использую код:
Код

    $rootdir = dirname(__FILE__);
    $pos = 0;
    for($pos = -4; $pos > 0; $pos = strpos($rootdir, '/www/', $pos + 4)); // ищем последнее '/www/'
    $rootdir = substr($rootdir, 0, $pos + 4);

Я проверял его под Windows. Вопрос в том, как он поведёт себя на других ОС.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.