Перейти к содержимому



Не работают абсолютные ссылки. С чем это может быть связано?

#1 volkan

volkan
  • Пользователь
  • 10 сообщений
  • Репутация: 0
0

Отправлено 25 Январь 2013 - 18:53

Файл pages/n1.php содержит:

	<?
	include ("/n2.php");
	?>
	<br><br><br>
	<?
	include ($_SERVER['DOCUMENT_ROOT']."/n2.php");
	?>

Файл n2.php содержит:

	<? echo "Ссылка работает!"; ?>

Страница pages/n1.php в браузере выглядит так:

Warning: include(/n2.php) [function.include]: failed to open stream: No such file or directory in /home/u444555333/public_html/pag es/n1.php on line 8

Warning: include() [function.include]: Failed opening '/n2.php' for inclusion (include_path='.:/usr/lib/php') in /home/u444555333/public_html/pag es/n1.php on line 8



Ссылка работает!


Оба инклюда, вроде бы, означают одно и то же. Почему тогда работает только второй?

 

 

  • 0

#2 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 25 Январь 2013 - 18:58

include ("/n2.php");


вот так попробуй
include ("n2.php");

так как если ты используешь /n2.php (слеш перед именем)
поиск будет производится от корневой директории
  • 0

#3 Shaka13

Shaka13
  • Заблокированные
  • 136 сообщений
  • Репутация: 10

Отправлено 25 Январь 2013 - 18:59

а где лежит n2? поставь
include ("n2.php");
  • 0

#4 volkan

volkan
    Topic Starter
  • Пользователь
  • 10 сообщений
  • Репутация: 0

Отправлено 25 Январь 2013 - 19:27

n2.php лежит в корне.
include ("n2.php"); не работает, да и как оно будет работать, в таком случае ведь он будет искать в этой же папке (или это особенности инклюда?)

вот так попробуй

include ("n2.php");

так как если ты используешь /n2.php (слеш перед именем)
поиск будет производится от корневой директории


Так мне и нужно от корневой
  • 0

#5 Shaka13

Shaka13
  • Заблокированные
  • 136 сообщений
  • Репутация: 10

Отправлено 25 Январь 2013 - 19:37

include ("./n2.php"); - от корня сайта
include ("../n2.php"); - на уровень выше
include ("n2.php"); - в той же папке
  • 0

#6 volkan

volkan
    Topic Starter
  • Пользователь
  • 10 сообщений
  • Репутация: 0

Отправлено 25 Январь 2013 - 19:39

А, тут оказывается всё немножко интересней - не работает только внутри include'а. Изображения подключаются нормально. Что это может быть, подскажите, пожалуйста.
  • 0

#7 Shaka13

Shaka13
  • Заблокированные
  • 136 сообщений
  • Репутация: 10

Отправлено 25 Январь 2013 - 20:23

хз, дамп сделай, что выводит, попробуй одинарные кавычки ;) скобки убери http://php.net/manua...ion.include.php :)
  • 0

#8 Shaka13

Shaka13
  • Заблокированные
  • 136 сообщений
  • Репутация: 10

Отправлено 25 Январь 2013 - 21:02

кстати ты не злоупотребляй short tag, у меня так работает:
<?php
include ("../n2.php");
?>
<br><br><br>
<?php
include ($_SERVER['DOCUMENT_ROOT']."/n2.php");
?>

и

<?php
echo "Ссылка работает!";
?>

  • 0

#9 msorokin

msorokin
  • Пользователь
  • 5 сообщений
  • Репутация: 1

Отправлено 14 Февраль 2013 - 15:13

Оба инклюда, вроде бы, означают одно и то же. Почему тогда работает только второй?

Нет они означают не одно и тоже. $_SERVER['DOCUMENT_ROOT'] - это не корневая папка сервера, а корневая папка твоего аккаунта..

Говоря что

n2.php лежит в корне.

ты ошибаешься (если это конечно не твой сервер, скорее всего это обычный виртуальный раз такие вопросы задаются).

Если ты в ФТП менеджере или т.п. не можешь попасть в директорию выше, это не значит что она корневая, а значит что прав не достаточно подняться наверх.

P.S.: Это все распространяется на виртуальные хостинги и правильно настроенные дедики.

Корневая папка твоего аккаунта "/home/u444555333/public_html/pages/", где и лежит файл n2.php и удачно инклудиться вторым способом.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru