Глиф Учебники

Как подключить файл в PHP

Справочник · PHP · 2 минуты чтения

PHP
<?php
require __DIR__ . '/header.php';

Так подключается файл header.php из той же папки, где лежит текущий файл. Код из подключённого файла выполняется в этом месте, как будто вставлен сюда, и видит все переменные, созданные выше.

Какую команду выбрать

КомандаНет файлаУже подключён
requireфатальная ошибка, остановкаподключит снова
includeпредупреждение, работа продолжаетсяподключит снова
require_onceфатальная ошибка, остановкапропустит
include_onceпредупреждение, работа продолжаетсяпропустит

Путь к файлу

Пишите путь от __DIR__ — папки текущего файла. Тогда подключение работает, откуда бы ни запускался скрипт:

PHP
<?php
require __DIR__ . '/inc/functions.php';
require __DIR__ . '/../config.php';
require dirname(__DIR__) . '/config.php';

Первая строка — файл во вложенной папке inc, вторая и третья — один и тот же файл уровнем выше (dirname отрезает последнюю папку пути).

Пути без __DIR__ (require 'inc/functions.php' или require '../config.php') PHP ищет по списку папок include_path и от текущей рабочей папки, а пути с ./ и ../ — только от рабочей папки. Когда один подключённый файл подключает другой, рабочая папка остаётся папкой первого скрипта, и такой путь может указать не туда.

Ошибка «Failed to open stream»

Текст
Warning: require(inc/functions.php): Failed to open stream: No such file or directory in /var/www/html/index.php on line 2

За ней следует фатальная ошибка Failed opening required 'inc/functions.php'. Что проверить:

Файл возвращает значение

Подключённый файл может вернуть значение через return — обычно так хранят настройки:

PHP
<?php
return [
    'site_name' => 'Каталог',
    'per_page' => 20,
];

Если это config.php, то $config = require __DIR__ . '/config.php'; положит массив настроек в $config.

Нельзя: имя файла от посетителя

Не подставляйте в include и require значения из $_GET, $_POST и cookie: include $_GET['page']; позволит выполнить или показать любой файл на сервере. Выбирайте файл по ключу из списка разрешённых (пример — в уроке Файлы и подключение).

Подключить файл по адресу http://… по умолчанию нельзя (настройка allow_url_include выключена), и включать её не нужно: это прямой путь к выполнению чужого кода. Для своих библиотек используйте автозагрузку Composer (справка Composer).

Подробно о сборке сайта из частей и о работе с файлами — урок Файлы и подключение.