include из папки более высокого уровня

smartello

Новичок
include из папки более высокого уровня

есть папка /admin/ в ней проблемная страница, есть папка корневая для сайта. взяв инклудом страницу include('../header.inc') получаю отсутствие картинок и недоступность CSS, раньше я это решал по рабочекрестьянски, просто копировал CSS, header, footer, но картинки копировать, ну это же спартанский метод какой-то. Возможно ли как-нибудь так включить в скрипт страницу, чтобы все её инклуды имели приставку ../ или чтоб просто вставленная страница ковырялась в своей папке, а не в папке с конечной страницей?
можно конечно меню закинуть в отдельный файл, это будет выходом, но тоже не лучшим...

-~{}~ 06.01.05 15:52:

некоторые раздумья и изучение структуры собственного сайта привели к выводу, что выход с меню - вовсе не выход :(
 

smartello

Новичок
нет, не выход
на одной из платформ сайт находится не в корне сервера... а на другой именно там, не могу же я делать 2 кода
 

SiMM

Новичок
Автор оригинала: smartello
на одной из платформ сайт находится не в корне сервера... а на другой именно там
Ну и что?
не могу же я делать 2 кода
Не вижу связи - что тебе мешает определить в конфигурационном файле, где он лежит, и уж далее выводить пути, как надо?
 

smartello

Новичок
вопрос дурацкий конечно... но как мне теперь выцеплять файл конфигурационный? всё равно придётся хэдеры плодить

-~{}~ 06.01.05 16:20:

Cougar
посмотрел в хэлпе про это, вроде это мой случай, спасибо! :)

-~{}~ 06.01.05 16:28:

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

MuXa247

Новичок
Originally posted by smartello
вопрос дурацкий конечно... но как мне теперь выцеплять файл конфигурационный? всё равно придётся хэдеры плодить

Конфиг файл(единственный из всех) как раз нужно не абсолютными путями указывать! И клади его всегда в основной каталог программы!
 

SiMM

Новичок
Автор оригинала: MuXa247
Конфиг файл(единственный из всех) как раз нужно не абсолютными путями указывать!
Это почему это?
PHP:
require dirname(__FILE__).'/full_relative_path_to_cfg_file';
 

Ilya

Новичок
хммм...

я делаю так:
в начале скрипта:
Код:
  $inc=$_SERVER['DOCUMENT_ROOT'] . "/res/inc/auto.inc.php";
  include_once( $inc );
это в начале каждого скрипта...

а в "конфиге"(auto.inc.php)
Код:
 $site_root = $_SERVER['DOCUMENT_ROOT'] . "/";
и потом просто пользуюсь этим самым site_root
 

Crazy

Developer
smartello, работает, если прописан в php.ini (если мне память не изменяет). Но здоровые на голову люди редко используют связки IIS+PHP и Apache+ASP... :)
 

smartello

Новичок
я здоровый, просто при наличии лицензионной винды... да ещё лёгкость установки подкупает, вобщем буду php.ini ковырять

-~{}~ 06.01.05 18:30:

неа, прописал я там doc_root, а толку 0

-~{}~ 06.01.05 18:37:

сижу долблюсь, а ведь можно путь вообще полностью прописывать абсолютный... благо хостеры дают физические адреса, да и ЮРЛ туда же можно забить

-~{}~ 06.01.05 18:51:

не получается ничего на третьей строчке хэдера, выглядещей вот так:
2 require("$sr/conf/sql.php");
3 mysql_connect($host,$dbuser,$dbpass) or die("error1");

уже получаю:

Notice: Undefined variable: host in http://localhost/iu7/header.inc on line 3

Notice: Undefined variable: dbuser in http://localhost/iu7/header.inc on line 3

Notice: Undefined variable: dbpass in http://localhost/iu7/header.inc on line 3

Warning: mysql_connect(): Access denied for user: 'ODBC@localhost' (Using password: NO) in http://localhost/iu7/header.inc on line 3
error1

$sr=http://localhost/iu7

echo("$sr/conf/sql.php"); выдаёт рабочий адрес. Я вообще не понимаю что происходит уже

-~{}~ 06.01.05 18:51:

и не надо говорить, что переменные не те, всё работало...
 

Santito

Новичок
Мой совет все что инклюдишь должно находиться в той же папке куда инклюдишь! Я знаю может это не красиво, но зато работает безотказно! Когда кто-то зайдет на твой сайт ему главное чтобы он работал!
 

smartello

Новичок
Santito
зато чтоб сменить дизайн мне придётся сменить 10-к хэдеров и футеров... да ещё и не одинаковых!
 
smartello
напиши вторую строчку вот так:
2 require( $sr."/conf/sql.php" );
мож из-за этого глюки...
echo("$sr/conf/sql.php"); выдаёт рабочий адрес. Я вообще не понимаю что происходит уже
Это находится в скрипте header.inc?
И ты его запускаешь?

Santito
:)
Когда всего 3 файла - то это хорошо, но когда их, скажем 20-30?
 

smartello

Новичок
нет, такой же глюк, а файлов штук 10, поэтому вовсе не зочется клонировать хэдеры и футеры
 
smartello
Т.е. в файле sql.php - все нормально, а в header.inc - глюк?
+---------
Кстати, не
$sr=http://localhost/iu7
, а
$sr="http://localhost/iu7";
 

smartello

Новичок
да-да-да, перепробовал все варианты... файл по заданному адресу исполняется, но в код не включается...

-~{}~ 06.01.05 21:33:

заметил интресный факт
у меня меню приходит через инклуд в хэдер, так вот хэдер, находящийся в папке /iu7/ , вызванный из /iu7/admin/ выполняет команду include("menu.inc"); адекатно, хотя файл находится в /iu7/ а относительные ссылки в меню указывают на папку /iu7/admin/ - вот такие вот причуды инклуда...

-~{}~ 06.01.05 21:40:

так вот же он! вот вам и баг! инклуд второго порядка идёт сразу из старого адреса, а картинки подгружаются потом, поэтому не надобыло трогать адреса инклудов, но надо поменять адреса ЦСС и изображений и всё в шоколаде!
 

smartello

Новичок
hobobob
может быть, я и выгляжу сейчас дураком, но ведь никто мне этого не объянил...
 
Сверху