Вот например у нас есть файлы: config/db.php Код (Text): <?php echo "test"; ?> models/profile.php Код (Text): <?php require_once "../config/db.php"; ?> profile.php Код (Text): <?php require_once "models/profile.php"; ?> 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): <?php if (!defined(XCONT)){ die("access denied"); } echo "test"; ?> models/profile.php Код (Text): <?php if (!defined(XCONT)){ die("access denied"); } require_once "config/db.php"; ?> profile.php Код (Text): <?php define("XCONT", "true"); require_once "models/profile.php"; ?> То-есть прописывать везде пути так, как их видят файлы в корневом каталоге сайта. Какие подводные камни?
1. Усегда пиши путь от корня, например, $_SERVER['DOCUMENT_ROOT'] . '/folder/file.php', если это пхп-файлы, чтото инклудится, открывается в процессе работы пхп. Если это статика (картинка, css-файл, js-файл) - то просто от корня в таком виде "/folder/file.css". Бывают исключения, когда статика на другом домене или чтото из пеара инклудится и т.д. Но то такое. 2. Как альтернатива - определение своего псевдокорня, в котором работает твой сайт - в какуюто переменную или константу и через нее уже начинай указывание пути.
не совсем так. это файловая система сервера (там где документ-рут в примере). а второе - относительный адрес в браузере. когда мы на сервере работаем с файловой системой (а с картинками, стилями и жс-файлами мы тоже ведь можем работать) - используем пути относительно корня сервера. в браузере - относительно корня домена. ну то есть всегда относительные пути. рекомендую. меньше проблем с переносами.
1. 2. Что "не совсем так"? Второй пункт как раз и подразумевал открытие файла со стороны браузера. Первый пункт - со стороны самого пхп.
А на мой взгляд - лучше не стоит строить пути относительно document root. В принципе мелочь, конечно, но я предпочитаю внутри каждого скрипта (который непосредственно вызывается из браузера) определять полный путь до этого скрипта ( dirname(__FILE__); ) и уже относительно него работать с другими файлами программы - инклудить там что-то, читать, записывать и пр. Так мы можем спокойно переносить программу в любую папку без каких-либо изменений в коде. Т.е. нам будет без разницы, где находится наша программа - прямо в корне сайта (public_html) или в какой-то папке (public_html/folder1/program_folder). Пути для браузера указываю не относительно корня, а тоже относительно вызываемого файла, то есть без слэша в начале. Т.е., опять-таки, будет абсолютно без разницы, куда запихнуть программу - хоть в корень, хоть в какую-то другую папку.
кому как удобно у меня вообще только два варианта - либо по внутреннему стандарту (четко задано что где относительно корней) либо дот-слешем для автономной ветки