За последние 24 часа нас посетили 184444 программиста и 2204 робота. Сейчас ищут 1613 программистов ...

По поводу путей. Как лучше прописывать?

Тема в разделе "PHP для новичков", создана пользователем html-программист, 8 мар 2012.

  1. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Вот например у нас есть файлы:

    config/db.php
    Код (Text):
    1.  
    2. <?php
    3.    echo "test";
    4. ?>
    models/profile.php
    Код (Text):
    1. <?php
    2.    require_once "../config/db.php";
    3. ?>
    profile.php
    Код (Text):
    1. <?php
    2.    require_once "models/profile.php";
    3. ?>
    models/profile.php спокойно соединяется с config/db.php и выводит test
    В то-же время profile.php уже не может соединиться с config/db.php через models/profile.php

    Некоторые продвинутые типы делают что-то такое:
    $this->APP_PATH = dirname(dirname(__FILE__)) ;
    или используют
    $_SERVER['DOCUMENT_ROOT'];

    Я вот думаю, может мне проще сделать так:

    config/db.php
    Код (Text):
    1. <?php
    2.     if (!defined(XCONT)){
    3.         die("access denied");
    4.     }
    5.     echo "test";
    6. ?>
    models/profile.php
    Код (Text):
    1. <?php
    2.     if (!defined(XCONT)){
    3.         die("access denied");
    4.     }
    5.     require_once "config/db.php";
    6. ?>
    profile.php
    Код (Text):
    1. <?php
    2.     define("XCONT", "true");
    3.     require_once "models/profile.php";
    4. ?>
    То-есть прописывать везде пути так, как их видят файлы в корневом каталоге сайта.

    Какие подводные камни?
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    1. Усегда пиши путь от корня, например, $_SERVER['DOCUMENT_ROOT'] . '/folder/file.php', если это пхп-файлы, чтото инклудится, открывается в процессе работы пхп. Если это статика (картинка, css-файл, js-файл) - то просто от корня в таком виде "/folder/file.css". Бывают исключения, когда статика на другом домене или чтото из пеара инклудится и т.д. Но то такое.

    2. Как альтернатива - определение своего псевдокорня, в котором работает твой сайт - в какуюто переменную или константу и через нее уже начинай указывание пути.
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    не совсем так. это файловая система сервера (там где документ-рут в примере). а второе - относительный адрес в браузере. когда мы на сервере работаем с файловой системой (а с картинками, стилями и жс-файлами мы тоже ведь можем работать) - используем пути относительно корня сервера. в браузере - относительно корня домена. ну то есть всегда относительные пути. рекомендую. меньше проблем с переносами.
     
  4. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    1.
    2.
    Что "не совсем так"? Второй пункт как раз и подразумевал открытие файла со стороны браузера. Первый пункт - со стороны самого пхп.
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А на мой взгляд - лучше не стоит строить пути относительно document root. В принципе мелочь, конечно, но я предпочитаю внутри каждого скрипта (который непосредственно вызывается из браузера) определять полный путь до этого скрипта ( dirname(__FILE__); ) и уже относительно него работать с другими файлами программы - инклудить там что-то, читать, записывать и пр. Так мы можем спокойно переносить программу в любую папку без каких-либо изменений в коде. Т.е. нам будет без разницы, где находится наша программа - прямо в корне сайта (public_html) или в какой-то папке (public_html/folder1/program_folder). Пути для браузера указываю не относительно корня, а тоже относительно вызываемого файла, то есть без слэша в начале. Т.е., опять-таки, будет абсолютно без разницы, куда запихнуть программу - хоть в корень, хоть в какую-то другую папку.
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    кому как удобно
    у меня вообще только два варианта - либо по внутреннему стандарту (четко задано что где относительно корней) либо дот-слешем для автономной ветки