2013-06-15 2 views
0

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

В качестве страницы, где включается изменение, так же как и расположение файлов, которые включают вызовы. Возьми?

Пример: У меня есть названный «index.php». У меня также есть файл под названием «load.php». и я получил файл в последний называется "/folder/index2.php"

index.php код: <?php include("load.php"); ?>

index2.php код: <?php include("../load.php"); ?>

load.php код: <?php echo '<img src="image.png"/>'; ?>

При загрузке index.php изображение отображается отлично, как и должно быть. При загрузке index2.php, который находится в другой папке, но успешно загружает файл «load.php», изображение говорит, что его невозможно найти, что имеет смысл, поскольку index2.php вызывает изображение, как если бы он был в той же папке, которой нет.

Итак, есть ли способ сделать это? Я пытаюсь избежать использования полного URL-адреса, но если это единственный способ, я буду использовать это. Я просто ищу лучший вариант.

+0

лет можно определить константу как ROOT с URL, как 'HTTP: (. ROOT "load.php") // youwant /', а затем использовать как 'включают;' ' include (ROOT. «some/load.php»); ' –

+0

Проверьте этот вопрос: http://stackoverflow.com/questions/1882044/get-parent-directory-of-running-script –

ответ

2

Во-первых, попробуйте указать свои include файлы, используя корень документа: $_SERVER['DOCUMENT_ROOT'] ... это всегда будет направлять в корневую папку общественной, так что будет то же самое, независимо от того, где на сайте вы - это особенно полезно когда вы начинаете включать файлы, которые сами include/require другие файлы ... в этом сценарии включенный скрипт, который сам включал в себя суб-скрипты относительно (../load.php | subfolder/load.php и т. д.), никогда не будет работать с двух разных уровней иерархии папок.

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

Тогда за ресурсы, которые называют в HTML, просто сделать их все по отношению к общественному корню, а также:

<?php echo '<img src="/image.png"/>'; ?> 

Обратите внимание на / перед изображением src? Это всегда будет вызывать изображение независимо от того, в какой папке находится текущая отображаемая страница.

В качестве альтернативы вы можете просто указать ресурсы абсолютно (хотя это не так, как если бы домен сайта менял, он разрушит ссылки ресурсов):

<?php echo '<img src="http://www.yoursite.com/image.png"/>'; ?> 

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

+0

Это не совсем то, что я находясь в поиске. Не имеет значения, где находится нагрузка. Я ищу исправление внутри файла load.php – Jazerix

+1

Вторая часть моего ответа объясняет, как указать связанные ресурсы, чтобы они были неактивными. –

+0

ха-ха, да, это было, что тире было все, что я искал, спасибо тебе, очень много! Я могу, наконец, успокоиться, это меня беспокоило часами! : D – Jazerix

0

Я предлагаю сделать config.php

использовать переменную для полного пути.$imgPath = 'www.host.com/path/images/';

включить его в начале каждой страницы,

в использовании load.php <?php echo '<img src="'.$imgPath.'image.png"/>'; ?>

теперь, когда вы включаете load.php, у вас не будет никаких ошибок :)

1

$_SERVER['DOCUMENT_ROOT'] указывает на то, текущий публичный корень в include, как уже упоминалось.

Источник изображения можно запустить с помощью косой черты: <img src="/image.png">, чтобы сообщить браузеру о корне домена. Указанный src должен указать браузеру проверить www.example.com/image.png, если он помещен в любой документ по адресу www.example.com или в любой из его подкаталогов.

Edit: Бен был быстрее при редактировании

+0

+1 - вы, вероятно, ответили более прямолинейно, в любом случае. –

Смежные вопросы