Открыть меню    

PHP include от корня

Когда я ссылаюсь на изображения, это всегда выглядит приблизительно так:

HTML

<img src="/images/logo.png" alt="logo" />

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

Если путь не начинается с "/", то это по-прежнему относительный путь к файлу, но местоположение все время зависело бы от того в какой директории сайта находится ваш файл. То есть пути будут работать в /index.php, и разрушатся, если вы перенесете файл index.php (у которого путь на изображения прописан без слеша: src =“images/logo.png" alt="logo") в /contact/, так как папка images лежит в корне сайта, а не в папке /contact/.

Здравый смысл.

Однако все становится немного сложнее, когда имеешь дело с серверной стороной языка PHP. Вы можете также сделать включение с помощью PHP:

PHP

<?php include("header.php"); ?>

Поскольку здесь также не указан "/", проблема (проявляющаяся с нашим примером про изображения) переносится и сюда. Если перенести код в различные директории, ссылка может быть сломана. У PHP простое использование в начале "/" работать не будет, что может существенно запутать.

Проблема в том, что PHP видит "немного глубже" (прямиком в корень файловой системы) по сравнению с HTML. Например, публичная директория (по PHP) фактически расположена в "/var/www/vhosts/site/httpdocs" на моем сервере. То есть, когда вы ставите в начало "/", ваш путь углубляется намного дальше, чем вы думаете. Фактически вы хотите увидеть только открытую директорию, в моем случае это httpdocs, а получаете путь до самых основ.

Чтобы вернуть функциональность и использовать относительные пути, которые не меняются при переносе файлов, используйте следующее PHP решение:

PHP

<?php
   $path
= $_SERVER['DOCUMENT_ROOT'];
   $path
.= "/common/header.php";
   include_once
($path);
?>

Комментарии к статье

аватарка пользователя
2013-08-21
Эдуард

Огромное спасибо за вашу статью) Была проблема с корневым файлом. Если указать ../ - путь не правильный, о чём я понял когда подключал функционал на сайте)

аватарка пользователя
2013-10-28
Андрей

Запарился воевать с шаблоном под Зеброид, но этот вариант сработал. Большое спасибо

аватарка пользователя
2016-04-10
Артем

Блин, вот это помогло! Огромное спасибо!
Возьму себе на заметку!

аватарка пользователя
2016-05-13
Александр

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

аватарка пользователя
2017-06-20
Александр

Спасибо вам, помогли решить мою проблему

аватарка пользователя
2019-03-23
Алексей

Автор красава! Кучу сайтов облазил, только ты помог! +100500