Нужна помощь по инклюдам в php.

12
crk
На сайте с 23.05.2007
Offline
58
crk
952

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

Пример:

страница www.sait.ru/papka1/papka2/stranica1.html вызывает инклюд www.sait.ru/papka1/include1.php, и страница www.sait.ru/stranica2.html вызывает тот же инклюд.

Вызываем наш инклюд с помощью относительных адресов:

со страницы 1 - <? include("../include1.php"); ?> (код вызова 1)

со страницы 2 - <? include("papka1/include1.php"); ?> (код вызова 2)

Есть ли возможность сделать строки кодов вызова одинаковыми? То есть по сути сделать их абсолютными, но не равными <? include("www.sait.ru/papka1/include1.php"); ?>

Zhilinsky
На сайте с 05.08.2007
Offline
86
#1

Нужно делать инклюд полным адреом от корневого каталога. Полный путь можно узнать у саппорта хостинга.

например,

/var/www/site.ru/papka1/include.php

/www/papka1/include.inc

В таком духе =)

Жилинский (http://жилинский.рф/).
dex
На сайте с 14.04.2006
Offline
231
dex
#2

ой... как запутанно...

может проще абсолютный путь на сервере указать - типа /var/www/username/data/www/sait.ru/papka1/include1.php ?

губит людей вода (подпись не продаю, в долг не даю)
S
На сайте с 09.10.2007
Offline
186
#3

узнать путь можно не только у саппорта. если разрешена команда system, то system("pwd");

Удобная панель для доменных имен (http://panel.started.ru/) с массовыми операциями. Индивидуальные цены по запросу.
crk
На сайте с 23.05.2007
Offline
58
crk
#4
Zhilinsky:
Нужно делать инклюд полным адреом от корневого каталога. Полный путь можно узнать у саппорта хостинга.
например,
/var/www/site.ru/papka1/include.php
/www/papka1/include.inc

В таком духе =)

Спасибо :)

Web-Silver
На сайте с 02.05.2007
Offline
256
#5
dex:
ой... как запутанно...

может проще абсолютный путь на сервере указать - типа /var/www/username/data/www/sait.ru/papka1/include1.php ?

А что будет, если сайт переедет на совершенно другой хостинг?

D
На сайте с 25.11.2007
Offline
61
#6

Абсолютный путь к каталогу можно узнать создав php фаил с следующим содержанием


<?php
phpinfo();
?>

Сам путь можно вынести в отдельную переменную в конфиг файле. При переезде нужно будет заменить только значение переменной и все.

Skom
На сайте с 02.12.2006
Offline
165
#7

$_SERVER[DOCUMENT_ROOT]

и не надо ничего спрашивать у хостера и менять при переезде.

Cras amet qui numquam amavit quique amavit cras amet
Николай В.
На сайте с 07.09.2006
Offline
62
#8

Можно указывать абсолютный путь с помощью $_SERVER['DOCUMENT_ROOT']. Как вариант.

require_once $_SERVER['DOCUMENT_ROOT'] . '/papka1/include1.php';

Но его использование несет ряд проблем. Так, с DOCUMENT_ROOT, вы не сможете повторно развернуть систему вне непосредственно корневой директории.

Нормальным решением мне кажется использование одного инициализирующего файла, который подключается через dirname(__FILE__), и set_include_path() с __autoload()

crk
На сайте с 23.05.2007
Offline
58
crk
#9

Спасибо всем. Проблема с инклюдами решена.

Еще вопрос, если позволите. Я бы хотел также решить проблему и с изображениями которые находятся в вызываемых инклюдах. Как мне для них прописать адрес таким способом?

Zhilinsky
На сайте с 05.08.2007
Offline
86
#10

а точно так же.

<img src="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>/papka-s-kartinkami/gopa.jpg" /> :-)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий