Как сделать относительный путь к файлу php

Обновлено: 02.07.2024

Одна из самых занимательных и полезных возможностей php - подключение другого файла. Например, на сайте есть верхнее меню, нижнее и между ними само содержание страницы. И, например, на 10 страницах сайта используется нижнее меню. В какой-то момент в него потребовалось внести изменения. В html Вы бы вручную в каждом отдельном файле вносили изменения, но php позволяет существенно упростить работу с сайтом! Код нижнего меню может содержаться в отдельном файле, а на каждой из 10-ти страниц можно просто подключать этот отдельный файл! То есть все изменения нужно теперь вносить только в файл с меню, а на 10-ти других оно будет отображаться уже с изменениями.

Смысл подключения в php простым русским языком:

Файл 1.php
Верхнее меню

Файл 2.php
Нижнее меню

Файл example.php
Подкючаем Файл 1.php
Содержание страницы
Подкючаем Файл 2.php

В результате проработки файла example.php будет отображено
Верхнее меню
Содержание страницы
Нижнее меню
Соответственно, чтобы что-либо изменить в нижнем меню, нужно внести изменения только в файле 2.php

Путь к файлу

Подключение файла происходит согласно указанному к файлу пути. Есть два варианта пути: относительный и абсолютный. Относительный - это указание пути к подлючаемому файлу относительно файла с инструкцией подключения. Абсолютный - указание полного пути к подключаемому файла.

Код PHP

include и include_once

include() - конструкция, предназначенная для включения файлов в код сценария PHP во время исполнения сценария PHP. При обработке кода инструкция заменяется на содержимое присоединяемого файла. Предлагаю сразу рассмотреть пример.

Рассмотрим работу include на примере двух файлов: index.php и text.php. Для простоты работы допустим, что они лежат в одной директории.

Код PHP (файл index.php)


Код PHP (файл text.php)


В результате работы файла index.php отобразится:

Обычный текст, содержащийся в основном файле
Текст, содержащийся в подключаемом файле
Правда удобно? Теперь, поменяв содержимое в файле text.php будет совершенно другой результат работы index.php!

Код PHP

require и require_once

Инструкции require и require_once работают идентично include и include_once за исключением лишь одной особенности - в случае того, если подключаемый файл не будет найден, выполнение скрипта будет остановлено (сценарий дальше не будет считываться), в то время как include и include_once просто выводят предупреждение и продолжают дальнейшее выполнение скрипта.

Постарайтесь в дальнейшем отказаться от использования include и require, применяйте их аналоги с суффиксом _once. В результате это упростит разбиение большой и сложной программы на относительно независимые модули.

Если не работает include или require

Чтобы понять причины того, почему не работает include, предлагаю проверить всё по шагам. Какими бы понятными и поверхностными не были указанные ниже пункты, проверьте всё с самого начала

1. Проверьте, работает ли Ваш сервер и php, работает ли вообще любой php код на сайте
2. Убедитесь, существует ли файл подключаемый файл
3. Проверьте, правильно ли введено название файла и расширение в подключении
4. Убедитесь, что подключаемый php-файл действительно находится по тому адресу, по которому указали
5. Попробуйте указать не относительный путь, а абсолютный (полный путь к файлу).

Пример Код PHP

6. Если у Вас не подключается файл и не отображается никакой ошибки, то в директории с файлом, который подключаете, создайте файл .htaccess со следующим содержимым


или в файле php, перед подключением, вставьте следующую строку

Как в PHP получить корневую директорию?

PHP в отличие от HTML видит файловую систему глубже. В HTML корнем сайта является некоторая директория, которая определяется настройками веб-сервера. Т.е. это определённый каталог в файловой системе, начиная с которого размещаются документы (файлы) этого сайта.

Например, в HTML путь к изображению image1.jpg , которое расположено в каталоге images относительно корня сайта будет иметь следующий вид:

В php слэш ( / ) обозначает корень файловой системы, а не корень сайта.

Т.е. такая запись в php будет означать, что файл image1.jpg расположен в директории images , которая находится в корне файловой системы.

Чтобы к этому файлу добраться из php необходимо будет проделать более длинный путь. Т.е. сначала добраться до корня сайта (некоторой директории), а потом от него до нужного файла.

Например, на хостинге (в зависимости от хостинга путь до корня сайта может отличаться) путь к файлу будет следующим:

PHP - Абсолютный путь до файла

Например, путь к файлу сайта, который работает на веб-сервере Apache (сборка Денвер) в операционной системе Windows будет следующим:

PHP - Корень сайта

Получить корневую папку сайта в скрипте php можно используя предопределённый (глобальный) массив $_SERVER :


Чтобы посмотреть путь к корневому каталогу достаточно создать любой php файл и поместить в него следующее содержимое:

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

Например, скопируем файл image1.jpg , расположенный в корне сайта, в каталог images ( /assets/images - путь от корня сайта):

Путь на сервере до файла через php, выведем на экран ! Вообще получим путь на сервере до файла разными способами!

Все о пути на сервере до файла на сайте

    -> теория -> без php -> глобальная переменная -> __FILE__ -> PHP_URL_PATH

Что такое путь до файла на сервере -> теория

Иногда, очень трудно понять, что означают те или иные значения! Как можно объяснить по простому, Что такое путь до файла на сервере!?

Давайте посмотрим в адресную строку и там вы увидите ссылку на файл и выше выделенного красным, вы не сможете подняться, это домен или по-другому можно его обозвать -> корневая папка, но данный путь на корневой папке не останавливается.

Выше есть еще несколько папок, с разной степенью доступа! И если мы весь путь, который существует выше корневой папки поставим вместо домена. то получим путь на сервере до файла

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

Получить путь до файла на сервере

Можно ли получить путь до файла на сервере без php!? Можно, но зачем!? Предположим, что у вас нет php!? Очень странно, но возможно! Никогда такой херней не занимался, но что не сделаешь для своих любимых пользователей.

У меня только единственный способ . кроме обращения в тех поддержку.

Заходим в админку, поскольку я не умею гадать, то заходим в свою админку сайта, у нас это DIRECTADMIN на ruweb - е

Ищем вкладку создать ftp аккаунт.

После того, как вы попали на новую вкладку опять нажимаем ftp аккаунт

Получить путь до файла на сервере

Получить путь до файла на сервере

Далее выбираем первый чекбокс и внизу видим путь на сервер до корневой папки:

Получить путь до файла на сервере

Получить путь до файла на сервере

Получить путь до файла на сервере -> способ №1

Да! Напоминаю, что в зависимости от структуры вашего сервера, и будет зависеть путь до файла на сервере

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

Далее нам понадобится путь от корневой, до файла:

Теперь соберем все вместе и выведем через echo

И получим путь на сервере до файла через глобальную переменную $_SERVER

Но у данной переменной есть некоторый минус, она вам покажет все, что есть после расширения, например get запрос.

Давайте сделаем живой пример и создадим ссылку с гет запросом нажмите по ссылке и посмотрите ниже пункта 4, что прибавилось в строке. выделено красным:

Как получить путь на сервере до файла с помощью -> __FILE__

Для того, чтобы получить путь на сервере до файла с помощью __FILE__, нам потребуется в самом файле установить код php!

Прямо здесь, выведем вот такую конструкцию получения всего пути на сервере до файла:

Пример вывода пути до файла на сервере:

Путь на сервере до файла php с использованием PHP_URL_PATH

Когда вам нужно избавиться от всякого мусора в пути до файла на сервере, то можно использовать ниже идущий способ:

Если вы собирайтесь делать сайт, то вам все равно придется иметь на борту несколько путей и разных, в разных переменных!

Так не получится, что например вы написали одну переменную и этого вам хватит - точно вам говорю не хватит!

Вчера мы рассматривали путь до корневой папки .

Из которой вы узнали, что путь до корневой папки я помещал в переменную - $home

В переменную $parse_url поместим функцию parse_url и разберем на части $_SERVER['REQUEST_URI'] из которой получим только часть ссылки где есть путь:

Выведем на экран путь на сервере до файла третьим способом:

Результат вывода пути на сервере до файла php:

Как сделать путь на сервере самостоятельно?

Кроме всех выше перечисленных способов получения пути к файлу - мы констатируем, что файл уже существует , а если нам нужно создать путь к файлу, который не существует?

Для того, чтобы сделать такой путь на сервере нам понадобится:

Константа, которая не изменяется, (кроме если вы не выше корневой) - это путь до корневой на сервере :путь до корневой

Далее - нам нужно знать путь до папки(если папка будет существовать), например :


Тем, кто изучал и знает HTML известно, что в качестве значения атрибута href тега a необходимо указать путь к файлу, на который делается ссылка.

Или, например, значением атрибута src тега img является путь к файлу с изображением, которое будет располагаться на странице.

Путь к файлу - это его адрес. Адрес может быть абсолютным и относительным.

Итак, что такое абсолютный и относительный пути к файлу?

Абсолютный путь к файлу

Абсолютный путь к файлу (иногда говорят полный путь к файлу) или абсолютный адрес работает везде, где прописана ссылка - независимо от имени сайта и его расположения.

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

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

Относительный путь к файлу

Для перехода между страницами внутри сайта используют относительные ссылки или относительные адреса. Относительный путь к файлу указывают относительно текущего документа или относительно корневого каталога. И здесь возможны варианты.

Рассмотрим несколько примеров.

Файлы расположены в одной папке

Главная страница этого сайта - файл index.php и страница, содержащая перечень статей - файл articles.php находятся в корневом каталоге (в одной папке). Для создания ссылки с одной из этих страницы на другую, необходимо в качестве значения атрибута href тега a указать имя файла, на который делается ссылка.

Ссылка на файл, расположенный во вложенной папке

Файл articles.php находится в корневом каталоге, а файл с изображением, которое необходимо вставить на страницу располагается во вложенной папке img корневого каталога.

Вложенная папка или каталог – это папка, которая расположена внутри другого каталога. Условно назовем это первым уровнем вложенности.

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



Относительный путь к файлу с изображением.


Относительный путь к файлу с изображением.

Ссылка из вложенной папки

Теперь наоборот: допустим, текущий файл находится во вложенной папке, а файл index.php , на который делается ссылка, расположен в корневом каталоге. В этом случае относительная ссылка (из файла, расположенного во вложенной папке) на файл index.php будет иметь следующий вид:

То есть перед именем файла, на который делается ссылка из вложенного каталога, необходимо поставить две точки и слэш ../ .

Второй уровень вложенности каталога

Еще один пример работы с относительными ссылками.

Файл, на который делается ссылка, имеет второй уровень вложенности, то есть он расположен в папке, которая уже является вложенной.

Тогда, чтобы сделать ссылку на файл, который расположен в корневом каталоге, необходимо добавить еще две точки и слэш ../ .

Подведем итог

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

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

Если требуется сослаться на какую-либо страницу другого сайта или вставить какой-либо объект, расположенный на другом сайте, то здесь уже нужно использовать абсолютный путь к файлу.

Читайте также: