При подключении файлов через include и require основная проблема — не сами конструкции, а корректные пути. Важно понимать разницу между относительными и абсолютными путями, использовать каталоги, сегменты . и .., а также константу __DIR__ для опоры на текущий файл. В этом уроке вы разберётесь, как формировать безопасные и предсказуемые пути к файлам в PHP, потренируетесь на практических заданиях и мини-тестах.
- задачи PHP и примеры подключения файлов
- тренажер PHP онлайн без регистрации и бесплатно
- как работает код с относительными и абсолютными путями
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Iterator интерфейс
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- IteratorAggregate интерфейс
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Функция htmlspecialchars().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Пути к файлам.
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
1. Найди относительные пути
Внимательно изучите приведённый фрагмент 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. Типы путей и примеры
В левой колонке перечислены типы путей к файлам, используемые в PHP при работе с include и require. В правой колонке приведены текстовые примеры строк путей. Сопоставьте каждый тип пути с соответствующим примером. Обратите внимание, что в правой колонке нет лишних вариантов, но порядок примеров перемешан.
3. Разложи пути по категориям
Перед вами список строк, представляющих различные пути и адреса. Разнесите их по категориям в соответствии с их типом и пригодностью для использования в конструкциях include и require в PHP. Каждый элемент должен оказаться в одной из четырёх категорий: «Абсолютный путь на сервере», «Относительный путь», «URL, не использовать в include», «Некорректная строка пути». Обратите внимание, что include и require в PHP работают с файлами на сервере, а не с удалёнными ресурсами по HTTP.
4. Разметь части выражения пути
В этом задании вам нужно разметить части выражения пути в PHP, используемое в конструкции include или require. В строке кода выделены несколько сегментов. Для каждого из них выберите один из четырёх типов: «магическая константа пути», «оператор конкатенации», «строковый литерал пути», «переменная с базовым путём». Это поможет лучше понять, как формируются пути к файлам в PHP.
include {{__DIR__~|~t1}} {{.~|~t2}} {{'/config/'~|~t3}} {{.~|~t4}} {{$settingsFile~|~t5}};5. Заполни простой путь к файлу
В этом задании вам нужно дополнить фрагмент PHP-кода, который подключает файл из подкаталога с помощью конструкции include. В коде пропущены ключевые элементы: имя конструкции подключения, разделитель пути и имя файла. Заполните пропуски так, чтобы скрипт корректно подключил файл 'config.php' из подкаталога 'includes', используя относительный путь. Обратите внимание на синтаксис PHP и правила записи путей к файлам.
<?php
// Подключение файла конфигурации из подкаталога
input1S 'includesinput2Sconfig.php';
// Дальнейший код скрипта
echo 'Файл подключен';
?>6. Собери безопасный путь из готовых фрагментов
В этом задании вам нужно собрать безопасный путь к файлу конфигурации, используя готовые фрагменты из выпадающего списка. В коде показано выражение подключения файла, где путь формируется по шагам: получение базового каталога, добавление подкаталога, добавление имени файла. На их местах стоят пропуски input1, input2 и input3. Выберите подходящие фрагменты из общего списка, чтобы получить корректный и безопасный путь. Обратите внимание на использование магических констант, функций для работы с путями и строковых констант.
// Подключение файла конфигурации базы данных
$configPath = input1S . input2S . input3S;
require_once $configPath;7. Найди ошибку в пути
В этом фрагменте PHP-кода подключается файл с настройками через require_once. В строке с подключением допущена ошибка в относительном пути к файлу: из-за неё скрипт не сможет найти settings.php. Найдите строку с require_once и исправьте только путь так, чтобы файл из каталога config, расположенного на один уровень выше текущего файла, был подключён корректно.
<?php// Текущий файл: public/index.php// Подключаем файл настроек относительным путём из каталога config на один уровень выше.$title = 'Главная страница';require_once './config/settings.php';echo $title;?>8. Собери блок кода с базовым путём
Из предложенных строк соберите корректный фрагмент 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';9. Шаги построения пути
Перед вами описание шагов, которые необходимо выполнить для корректного построения пути к файлу при использовании include или require в PHP. Шаги перемешаны. Вам нужно восстановить их логический порядок, соответствующий естественному ходу действий: от определения точки отсчёта до обработки возможной ошибки подключения файла.
10. Что выведет код с разными путями
Проанализируйте приведённый PHP-код, который подключает один и тот же файл 'data.php' тремя разными способами: через простой относительный путь, через путь с префиксом './' и через путь, собранный из базового каталога и имени файла. Определите, какой именно вывод (количество строк и их порядок) будет сгенерирован в результате выполнения скрипта.
<?php
// Основной скрипт
$baseDir = __DIR__ . '/';
$fileName = 'data.php';
// Первый способ: простой относительный путь
include 'data.php';
// Второй способ: путь с ./
include './data.php';
// Третий способ: путь, собранный из базового каталога и имени файла
include $baseDir . $fileName;
?>11. Определи результат при вложенных путях
Ниже представлен код трёх файлов, имитирующий структуру небольшого проекта. Точкой входа является файл `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";
?>