Пути к файлам

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

При подключении файлов через include и require основная проблема — не сами конструкции, а корректные пути. Важно понимать разницу между относительными и абсолютными путями, использовать каталоги, сегменты . и .., а также константу __DIR__ для опоры на текущий файл. В этом уроке вы разберётесь, как формировать безопасные и предсказуемые пути к файлам в PHP, потренируетесь на практических заданиях и мини-тестах.

  • задачи PHP и примеры подключения файлов
  • тренажер PHP онлайн без регистрации и бесплатно
  • как работает код с относительными и абсолютными путями
Список тем

1. Найди относительные пути

id: 39132_m15_paths_01_click_target

Внимательно изучите приведённый фрагмент PHP-кода, содержащий несколько директив подключения файлов. Ваша задача — кликнуть и выделить все строковые литералы, которые представляют собой относительные пути к файлам. Относительный путь указывает на расположение файла относительно текущего каталога скрипта и может начинаться с простого имени файла, с './' или с '../'. Не отмечайте абсолютные пути, которые начинаются с корня файловой системы (например, с '/' или 'C:\').

Кликните по всем фрагментам, которые подходят под условие задания.
<?php
// Подключение конфигурации
{{include 'config.php';~|~t1}}

// Подключение библиотеки из подкаталога
{{require './lib/database.php';~|~t2}}

// Подключение шаблона из родительской директории
{{include_once '../templates/header.html';~|~t3}}

// Подключение модуля из абсолютного пути (не отмечать)
{{require '/usr/local/share/module.php';~|~t4}}

// Подключение вспомогательного файла
{{include 'helpers.php';~|~t5}}

// Ещё один абсолютный путь в Windows-стиле
{{require_once 'C:\xampp\htdocs\app\boot.php';~|~t6}}

// Подключение стилей из подкаталога css
{{include './css/styles.css';~|~t7}}
?>
Сообщения
Проверить
Показать подсказку

2. Типы путей и примеры

id: 39132_m15_paths_02_compare

В левой колонке перечислены типы путей к файлам, используемые в PHP при работе с include и require. В правой колонке приведены текстовые примеры строк путей. Сопоставьте каждый тип пути с соответствующим примером. Обратите внимание, что в правой колонке нет лишних вариантов, но порядок примеров перемешан.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Абсолютный путь на сервере
Относительный путь от каталога скрипта
Путь с переходом на уровень выше
Путь на основе базового каталога проекта
Путь с использованием корня документа (DOCUMENT_ROOT)
Относительный путь к файлу в подкаталоге
$_SERVER['DOCUMENT_ROOT'] . '/includes/header.php'
/var/www/html/project/config/database.php
../lib/functions.php
src/Model/User.php
BASE_DIR . '/src/Controller.php'
config/database.php
Сообщения
Проверить
Показать подсказку

3. Разложи пути по категориям

id: 39132_m15_paths_03_sort

Перед вами список строк, представляющих различные пути и адреса. Разнесите их по категориям в соответствии с их типом и пригодностью для использования в конструкциях include и require в PHP. Каждый элемент должен оказаться в одной из четырёх категорий: «Абсолютный путь на сервере», «Относительный путь», «URL, не использовать в include», «Некорректная строка пути». Обратите внимание, что include и require в PHP работают с файлами на сервере, а не с удалёнными ресурсами по HTTP.

Перетяните элементы в соответствующие блоки
Абсолютный путь на сервере
Относительный путь
URL, не использовать в include
Некорректная строка пути
/var/www/html/config.php
./includes/header.php
http://example.com/lib.php
../utils/functions.php
C:\xampp\htdocs\index.php
ftp://server.com/file.php
config.php
//invalid/path
https://api.site.com/data.json
/home/user/project/scripts/init.php
../../../parent.php
file:///etc/passwd
Сообщения
Проверить
Показать подсказку

4. Разметь части выражения пути

id: 39132_m15_paths_04_highlight_parts

В этом задании вам нужно разметить части выражения пути в PHP, используемое в конструкции include или require. В строке кода выделены несколько сегментов. Для каждого из них выберите один из четырёх типов: «магическая константа пути», «оператор конкатенации», «строковый литерал пути», «переменная с базовым путём». Это поможет лучше понять, как формируются пути к файлам в PHP.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
include {{__DIR__~|~t1}} {{.~|~t2}} {{'/config/'~|~t3}} {{.~|~t4}} {{$settingsFile~|~t5}};
Оператор конкатенации
Переменная с базовым путём
Магическая константа пути
Строковый литерал пути
Сообщения
Проверить
Показать подсказку

5. Заполни простой путь к файлу

id: 39132_m15_paths_05_replace

В этом задании вам нужно дополнить фрагмент PHP-кода, который подключает файл из подкаталога с помощью конструкции include. В коде пропущены ключевые элементы: имя конструкции подключения, разделитель пути и имя файла. Заполните пропуски так, чтобы скрипт корректно подключил файл 'config.php' из подкаталога 'includes', используя относительный путь. Обратите внимание на синтаксис PHP и правила записи путей к файлам.

Заполните пропуски
<?php
// Подключение файла конфигурации из подкаталога
input1S 'includesinput2Sconfig.php';

// Дальнейший код скрипта
echo 'Файл подключен';
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Собери безопасный путь из готовых фрагментов

id: 39132_m15_paths_06_select_fill

В этом задании вам нужно собрать безопасный путь к файлу конфигурации, используя готовые фрагменты из выпадающего списка. В коде показано выражение подключения файла, где путь формируется по шагам: получение базового каталога, добавление подкаталога, добавление имени файла. На их местах стоят пропуски input1, input2 и input3. Выберите подходящие фрагменты из общего списка, чтобы получить корректный и безопасный путь. Обратите внимание на использование магических констант, функций для работы с путями и строковых констант.

Нужно правильно расставить в пропуски предложенные варианты
// Подключение файла конфигурации базы данных
$configPath = input1S . input2S . input3S;
require_once $configPath;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Найди ошибку в пути

id: 39132_m15_paths_07_error

В этом фрагменте PHP-кода подключается файл с настройками через require_once. В строке с подключением допущена ошибка в относительном пути к файлу: из-за неё скрипт не сможет найти settings.php. Найдите строку с require_once и исправьте только путь так, чтобы файл из каталога config, расположенного на один уровень выше текущего файла, был подключён корректно.

Найдите ошибку и исправьте
<?php
// Текущий файл: public/index.php
// Подключаем файл настроек относительным путём из каталога config на один уровень выше.
$title = 'Главная страница';
require_once './config/settings.php';
echo $title;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

8. Собери блок кода с базовым путём

id: 39132_m15_paths_08_build_from_parts

Из предложенных строк соберите корректный фрагмент PHP-кода, который с помощью константы __DIR__ задаёт базовый каталог в переменной $baseDir, на его основе формирует путь к подкаталогу 'includes' и полный путь к файлу config.php в переменной $filePath, а затем через проверку file_exists() подключает этот файл с помощью require. Строки, в которых подключается другой файл или путь формируется в обход базового каталога и подкаталога, использовать не нужно.

Перетяните в правильном порядке строки из одного блока в другой
<?php
$baseDir = __DIR__;
$includesDir = $baseDir . '/includes';
$filePath = $includesDir . '/config.php';
if (file_exists($filePath)) {
    require $filePath;
}
require $includesDir . '/config_local.php';
require __DIR__ . '/config.php';
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

9. Шаги построения пути

id: 39132_m15_paths_09_sequencing

Перед вами описание шагов, которые необходимо выполнить для корректного построения пути к файлу при использовании include или require в PHP. Шаги перемешаны. Вам нужно восстановить их логический порядок, соответствующий естественному ходу действий: от определения точки отсчёта до обработки возможной ошибки подключения файла.

Расставьте строки в правильном порядке
Обработать возможную ошибку, если файл не найден, используя условную проверку или блок try-catch.
Вызвать конструкцию include или require с полученным полным путём для подключения файла.
Если целевой файл находится на уровень выше, добавить к пути конструкцию '../'.
Добавить относительный подкаталог (например, 'includes/') к полученному пути.
Определить точку отсчёта — текущий файл, в котором выполняется код.
Получить абсолютный путь к каталогу текущего файла с помощью функции dirname(__FILE__) или __DIR__.
Добавить имя целевого файла с расширением (например, 'config.php') к сформированному пути.
Сообщения
Проверить
Показать подсказку

10. Что выведет код с разными путями

id: 39132_m15_paths_10_predict_result

Проанализируйте приведённый PHP-код, который подключает один и тот же файл 'data.php' тремя разными способами: через простой относительный путь, через путь с префиксом './' и через путь, собранный из базового каталога и имени файла. Определите, какой именно вывод (количество строк и их порядок) будет сгенерирован в результате выполнения скрипта.

Выберите правильный вариант ответа
<?php
// Основной скрипт
$baseDir = __DIR__ . '/';
$fileName = 'data.php';

// Первый способ: простой относительный путь
include 'data.php';

// Второй способ: путь с ./
include './data.php';

// Третий способ: путь, собранный из базового каталога и имени файла
include $baseDir . $fileName;
?>
Сообщения
Проверить
Показать подсказку

11. Определи результат при вложенных путях

id: 39132_m15_paths_11_give_result

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

Что должно получиться?
<?php
// --- Файл: /project/index.php ---
echo "Start";
require __DIR__ . '/libs/core.php';

// --- Файл: /project/libs/core.php ---
echo "Middle";
// Подключаем файл footer.php, который лежит в корне (/project/)
require __DIR__ . '/../footer.php';

// --- Файл: /project/footer.php ---
echo "End";
?>
Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 39132_compiler
🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру