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);
?>
Комментарии к статье
Огромное спасибо за вашу статью) Была проблема с корневым файлом. Если указать ../ - путь не правильный, о чём я понял когда подключал функционал на сайте)
Запарился воевать с шаблоном под Зеброид, но этот вариант сработал. Большое спасибо
Блин, вот это помогло! Огромное спасибо!
Возьму себе на заметку!
Вообще огонь, а то я мучался переписывать одни и те же файлы для того чтобы ссылки на них работали из нужной папки сайта.
Спасибо вам, помогли решить мою проблему
Автор красава! Кучу сайтов облазил, только ты помог! +100500