Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Почему не работает относительная ссылка на файл ра


Автор: vlad275 27.11.2009, 16:56
Почему не работает относительная ссылка на файл расположенный в корне сайта '/footer.inc'
Не работает:
Код


                <?php
                    include('/footer.inc');
                ?>



Работает:
Код


                <?php
                    include('../../../footer.inc');
                ?>


Автор: lelik133 27.11.2009, 17:13
вот здесь ответ на ваш вопрос http://ru2.php.net/manual/en/function.include.php#94392
если бы потратили 2 минуты на поиск. нашли бы сами

Автор: vlad275 27.11.2009, 17:16
Поиск задавал и ничего не нашел.
Прочел. Все-равно не понял в чем ошибка.  Не надо меня отсылать на километровые текстовые файлы лучше скажите в чем ошибка.

Автор: patap 27.11.2009, 17:48
у тебя скрипт на три уровня выше чем файл, который ты инклудишь

Автор: NewDima 27.11.2009, 18:07
Во-первых, это не ссылка, а путь к файлу.
Во-вторых "/footer.inc" - это абсолютный путь, а "../../../footer.inc" - относительный
В-третьих "/footer.inc" - файл расположенный не в корне сайта, а в корне файловой системы

Автор: skyboy 27.11.2009, 20:58
рекомендую http://phpfaq.ru/paths по путям на phpfaq.ru

Автор: vlad275 30.11.2009, 14:01
Так правильно?

Код

                <?php
                    include('/usr/home/ncaa/domains/ncaa.ru/footer.inc');
                ?>



Автор: vlad275 30.11.2009, 15:34
Так тоже не работает. Так как же из подкаталога сослаться на файл лежащий в корне сайта используя абсолютный путь?

Автор: bars80080 30.11.2009, 15:38
<?php

                    include($_SERVER['DOCUMENT_ROOT'].'/footer.inc');

?>

Автор: vlad275 1.12.2009, 12:55
Большое спасибо. А что делать с файлом css?
Нижеприведенный код не прокатил

Код

<link href="<?php echo $_SERVER['DOCUMENT_ROOT'];?>/css/styles.css" rel="stylesheet" type="text/css">


Получается следующий тэг, который не работает
<link href="/home/kapela/domains/kapela.ru/public_html/css/styles.css" rel="stylesheet" type="text/css">

Писать так?
<link href="http://kapela.ru/css/styles.css" rel="stylesheet" type="text/css">

Автор: patap 1.12.2009, 13:45
vlad275, ты прочитал статью, которую посоветовал skyboy? 
Для кого пишут...

Автор: bars80080 1.12.2009, 14:53
Цитата(vlad275 @  1.12.2009,  11:55 Найти цитируемый пост)
Большое спасибо. А что делать с файлом css?
Нижеприведенный код не прокатил


vlad275, различайте пути на сервере (физические) и пути в вэбе (урл). в статье по ссылке Скайбоя всё об этом сказано

Автор: vlad275 3.12.2009, 13:26
Прочел. Там написано, что 
Цитата

Поэтому надо писать полный путь от корня сайта - /job/vacancy.php


А если я из подкаталога ссылаюсь на изображение, которое лежит в корне сайта, то что написать?  src="/b.gif" не прокатывает

"../b.gif" не предлагать, так как мне нужен тег подходящий для каталога любой степени вложенности

Автор: MoLeX 3.12.2009, 13:48
Код

<img src="http://site.site/images/b.gif" />

Автор: vlad275 3.12.2009, 14:02
Так и делаю, но хотелось бы абсолютную ссылку.

Автор: patap 3.12.2009, 14:05
а http://site.site/images/b.gif - это какая? 

это и есть абсолютная сцылка для клиента.

для сервака будет че-то вроде /var/www/html/domain.com/.....

Автор: Pitlord 3.12.2009, 22:01
Цитата(vlad275 @  3.12.2009,  13:26 Найти цитируемый пост)
src="/b.gif" не прокатывает

Значит просто указан неверный путь, должно "прокатывать". В крайнем случае может мешать тег <base>.

Автор: MoLeX 4.12.2009, 06:11
vlad275, вы внимательно прочитали то что вам дал скубой? (http://forum.vingrad.ru/index.php?showtopic=281732&view=findpost&p=2032134)

Автор: vlad275 4.12.2009, 11:30
Прочитал, не знаю насколько внимательно smile
Замечу, что отсылать читать маны вместо ответа на прямо поставленный вопрос некоторые расценивают, как неуважение к собеседнику. Не хотел никого обидеть

Автор: bars80080 4.12.2009, 16:03
vlad275, да там особо внимательным быть не надо. вот первые строчки:
Цитата
твой сайт существует в как бы в двух измерениях.
Реальном и виртуальном.

Для всех посетителей - это виртуальный веб-сервер. Который отличается, в числе прочего, тем, что на нем НЕ СУЩЕСТВУЕТ ФАЙЛОВ. если ты пишешь http://site.ru/file.html - это не файл. Это URI, виртуальный адрес. Никакого файла с именем file.html на сервере может вообще не быть. Это все виртуальные адреса, а не файлы.
И браузер работает именно с адресами.

Для разработчика же сайт - это программа, выполняющаяся на совершенно конкретном реальном компьютере. С совершенно конкретным жестким диском, каталогами и файлами. И скрипт, работая со своими данными, подгружая другие скрипты, работает именно с реальными ФАЙЛАМИ, на физическом ДИСКЕ.

далее написано что надо понимать:
Цитата

А всего-то надо четко понимать две вещи:
1. Различать корень веб-сервера, как его видит браузер, и корень файловой системы на диске.
2. Отличие относительных путей от абсолютных.

твоя фраза 
Цитата(vlad275 @  3.12.2009,  13:02 Найти цитируемый пост)
Так и делаю, но хотелось бы абсолютную ссылку. 

касательно 
Цитата(vlad275 @  3.12.2009,  12:26 Найти цитируемый пост)
А если я из подкаталога ссылаюсь на изображение, которое лежит в корне сайта, то что написать?  src="/b.gif" не прокатывает

это как раз не понимание первого пункта.

вначале ты спрашивал про абсолютные относительные пути, тебе давали примеры относящиеся к файловой системе. но тут вдруг оказывается, что ты пытаешься приладить их к вэб-адресам.
и это объясняется:
Цитата

Различие корня веб-сервера, как его видит браузер, и корень файловой системы на диске.
В общем-то, из предыдущих объяснений уже все должно быть понятно.
На диске путь к файлу скрипта может быть таким:
/var/www/site/forum/index.php
В то же время, виртуальный адрес этого скрипта при просмотре через браузер, будет:
http://www.site.ru/forum/index.php
пользователь видит страничку из интернета, значит все картинки имеют вэб-адреса, а они либо начинаются с http:// - абсолютные, либо / или ../ - это уже относительные. к ним браузер добавит переднюю часть http:/ /server.ru/cat/ , либо другой, если указан тэг <baseurl>

статья говорит только о том что у тебя не получается. а ты пытаешься прописать файловый путь, начинающийся с /, который естественно воспринимается как относительный

Автор: vlad275 4.12.2009, 16:31
Значит из нескольких вложенных каталогов нужно писать такой путь?
<img src=<baseurl>base.gif>

Автор: bars80080 4.12.2009, 16:50
мда

вам видно надо ещё почитать, что такое html и как им пользуются

Автор: vlad275 4.12.2009, 20:49
Так?

Код

<html>
<base href="http://kapela.ru">
<img src="base.jpg">
<img src="./base2.jpg">


http://kapela.ru/base.jpg
http://kapela.ru/cat1/cat2/cat3/base2.jpg

Автор: MoLeX 7.12.2009, 07:14
Код

<img src="./base2.jpg">


это тоже самое что и

Код

<img src="base2.jpg">


если тебе надо пройтись в глубь папки то (для _http://kapela.ru/cat1/cat2/cat3/base2.jpg)
Код

<img src="/cat1/cat2/cat3/base2.jpg">

Автор: vlad275 7.12.2009, 13:06
Нет, мне нужно из глубины каталогов показывать jpg лежащий в корне сайта. Привязывать его к имени сайта не хочется. Похоже, что можно только так

<html>
<base href="http://kapela.ru">
<img src="base.jpg">


Вот такая ссылка не отображает jpeg
<img src="./base2.jpg">

Пример: http://kapela.ru/files/foto/1.htm

Автор: bars80080 7.12.2009, 15:31
Код

echo '<img src="http://'.$_SERVER['HTTP_HOST'].'/base2.jpg" />';

Автор: Ипатьев 7.12.2009, 15:33
А зачем хост указывать, если привязываться к нему не хочется?

Автор: bars80080 7.12.2009, 15:55
не понял. мы же не привязываемся. переложим скриптик на другой хост, там будет подставляться другое значение

или он хочет адресовать картинки на сторонний домен?

Автор: Ипатьев 7.12.2009, 16:11
а зачем? зачем будет подставляться, если и без подставления все прекрасно работает?

Автор: vlad275 7.12.2009, 16:41
Спасибо. Так заработало
Код

<?php
echo "<img src='http://".$_SERVER['HTTP_HOST']."/base.jpg' width='769' height='205' alt='Панорама склада, стеллажей и складской техники' title='общий вид склада: паллетные стеллажи, складская техника, автопогрузчики' />";
?>                


Автор: Pitlord 7.12.2009, 18:01
Цитата(vlad275 @  7.12.2009,  16:41 Найти цитируемый пост)
Спасибо. Так заработало
<?php
echo "<img src='http://".$_SERVER['HTTP_HOST']."/base.jpg'

Просто
Код

<img src="/base.jpg" alt="" />

Автор: vlad275 9.12.2009, 13:34
Так видит только из корня сайта "/base.jpg" 

Автор: Pitlord 9.12.2009, 15:01
Цитата(vlad275 @  9.12.2009,  13:34 Найти цитируемый пост)
Так видит только из корня сайта "/base.jpg"  

Вообще-то это эквиваленты

Автор: vlad275 9.12.2009, 17:56
Иногда <img src="/base.jpg"> из под-подкаталога не работает. Не знаю почему. Сейчас заработало

Автор: NewDima 9.12.2009, 18:18
Цитата(vlad275 @ 10.12.2009,  00:56)
Иногда <img src="/base.jpg"> из по-подкаталога не работает. Не знаю почему. Сейчас заработало

vlad275, ты хоть сам понимаешь бредовость своих заключений?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)