За последние 24 часа нас посетили 35376 программистов и 1814 роботов. Сейчас ищут 913 программистов ...

Оцените реализацию

Тема в разделе "PHP для новичков", создана пользователем Good][Man, 7 сен 2009.

  1. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    Задача полягается в том что бы не зависимо от того в корневом каталоге находится сайт или подкаталоге определить путь к катлогу в котором храниться сайт, я подошел к этому так. допустим я знаю что у меня один файл точно всегда будет находиться в папке include и поэтому решил написать код который ниже. Если кто-то знает методы более лучше подскажите пожалуйста.
    PHP:
    1.  
    2. define("DS",(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')?substr(dirname(__FILE__),0,strpos(dirname(__FILE__),'\include')):substr(dirname(__FILE__),0,strpos(dirname(__FILE__),'/include')));
    3.  
     
  2. Fduch

    Fduch Активный пользователь

    С нами с:
    1 июл 2009
    Сообщения:
    140
    Симпатии:
    0
    В корневом каталоге чего сайт находится? Вы про файловую систему на хосте?
    а $_SERVER['DOCUMENT_ROOT'] это не оно?
     
  3. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    нет это не оно.

    сайт может находить в любой директории он может быть в корневой , а может быть и где-то в подвале /www/site.ru/domen/subdomen/site - примерно так допустим,
    где

    /home/site.ru/www/ - это будет корневой каталог
    /home/site.ru/www/domen/subdomen/site - место где лежит сайт

    в документ рут будет хранится директория -> /home/site.ru/www/
     
  4. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    Ребята ну плин скажите по реализации задачи хоть пару слов..
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?php
    2.  
    3. define("DS", dirname(__FILE__) . "/include");
    4.  
    5. // Универсально
    6. define("DS", dirname(__FILE__) . DIRECTORY_SEPARATOR . "include");
    7.  
    8. ?>
     
  6. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    за директори сеператор спасибо а все остальное так же как у меня потому что дир_нейм ты не получаешь корневой каталог а получаешь каталог в котором вызывается файл а файл вызывается в подкатологе include.По сути ты написал тоже самое что и я только не довел до конца ед. за что спасибо это директори сеператор.

    Изменил с сеператором, и вследствие убрал проверку на какой ОС запускается файл.

    PHP:
    1.  
    2. <?php
    3.           define("DS",substr(dirname(__FILE__),0,strpos(dirname(__FILE__),DIRECTORY_SEPARATOR.'include')));
    4. ?>
     
  7. Fduch

    Fduch Активный пользователь

    С нами с:
    1 июл 2009
    Сообщения:
    140
    Симпатии:
    0
    а если как-то так?
    PHP:
    1.  
    2. <?
    3.  
    4. $my_file = __FILE__;
    5.  
    6. $my_basename = basename($my_file);
    7.  
    8. $my_dir = str_replace ( $my_basename, '', $my_file);
    9.  
    10. echo $my_dir;
    11.  
    12. define ('ROOT', $my_dir);
    13.  
    14. ?>
    15.  
     
  8. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    Ладно всё можно закрывать тему;) Для универсальности я получил совет с сеператором.Больше ее никак не улучшишь.