include_once файла из папки верхнего уровня

Palmiro

Новичок
include_once файла из папки верхнего уровня

Сразу скажу, что поиском найти ответ на данный вопрос не удалось.

Ситуация следующая:
есть описание класса DB_class.php.
Далее в подпапках уточнения реализации для разных БД.

Соответственно, в каждом уточнении есть строка:
PHP:
include_once("..\DB_class.php"); // Родительский класс
Так вот в браузере эта строка вызывает ошибку:
Warning: include_once(..\DB_class.php) [function.include-once]: failed to open stream: No such file or directory in C:\Program Files\Apache2.2\htdocs\test\database\MySQL\DBFunctions_class.php on line 2

Как же правильно прописать ссылку на файл, расположенный по иерархии папок выше?

Заранее спасибо!
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
[m]dirname[/m]
+
__FILE__

-~{}~ 26.11.08 11:29:

include_once(dirname(__FILE__).'/../filename.php');?>
 

dimagolov

Новичок
Palmiro, если ты почитаешь про относительные пути и про то, что при include текущая директория остается той же, что и у главного файла для всех подключенных, то поймешь, что проще могут быть только абсолютные пути
 

AmdY

Пью пиво
Команда форума
помнится меня знакомый java программист, заставил перечитывать ман на тему разницы между include и require
имхо, в такие моменты правильнее пользоваться require_once
 

Palmiro

Новичок
Если это были предложения, то ошибка аналогична:
Warning: require_once(..\DB_class.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache2.2\htdocs\test\database\MySQL\DBFunctions_class.php on line 2

Автор оригинала: fixxxer
код надо в принципе подключать только по абсолютным путям. :)
Простите за глупый вопрос:
PHP:
require_once("C:\Program Files\Apache2.2\htdocs\test\database\DB_class.php");
?
 

fixxxer

К.О.
Партнер клуба
во первых, пиши прямые слэши, они работают и в винде и в unix и не надо экранировать.

во вторых, я предпочитаю в каком нибудь центровом инклюднике сделать что то наподобие

define('PATH_ROOT', dirname(__FILE__))
и инклюдить уже относительно него

как вариант - от $_SERVER['DOCUMENT_ROOT'], но это не очень хороший вариант, т.к. он в некоторых случаях не определен или определен неверно
 

Palmiro

Новичок
Господа!
Всем спасибо за исчерпывающую консультацию!
Ситуация ясная.
 

AmdY

Пью пиво
Команда форума
HraKK
класс автолодера нужно тоже как-то подключить ;)
 
Сверху