- Урок 8. Подключение файла в PHP. Include и require
- Путь к файлу
- include и include_once
- require и require_once
- Если не работает include или require
- Как подключить файл в PHP?
- Include, Require и комментарии PHP
- PHP Include и PHP include_once
- Пример: Include / Include_once
- PHP Require & PHP require_once
- Разница между Include и Require
- Пример: Require
- Require и Require_once
- Заключение
- Подборка курсов по PHP
Урок 8. Подключение файла в PHP. Include и require
Одна из самых занимательных и полезных возможностей php — подключение другого файла. Например, на сайте есть верхнее меню, нижнее и между ними само содержание страницы. И, например, на 10 страницах сайта используется нижнее меню. В какой-то момент в него потребовалось внести изменения. В html Вы бы вручную в каждом отдельном файле вносили изменения, но php позволяет существенно упростить работу с сайтом! Код нижнего меню может содержаться в отдельном файле, а на каждой из 10-ти страниц можно просто подключать этот отдельный файл! То есть все изменения нужно теперь вносить только в файл с меню, а на 10-ти других оно будет отображаться уже с изменениями.
Смысл подключения в php простым русским языком:
Файл 1.php
Верхнее меню
Файл 2.php
Нижнее меню
Файл example.php
Подкючаем Файл 1.php
Содержание страницы
Подкючаем Файл 2.php
В результате проработки файла example.php будет отображено
Верхнее меню
Содержание страницы
Нижнее меню
Соответственно, чтобы что-либо изменить в нижнем меню, нужно внести изменения только в файле 2.php
Путь к файлу
Подключение файла происходит согласно указанному к файлу пути. Есть два варианта пути: относительный и абсолютный. Относительный — это указание пути к подлючаемому файлу относительно файла с инструкцией подключения. Абсолютный — указание полного пути к подключаемому файла.
// пример относительного пути
include "include/ваш_файл.php"; // файл лежит в папке include, которая находится в той же директории, что и файл с подключением
// пример абсолютного пути
include $_SERVER['DOCUMENT_ROOT']."/include/ваш_файл.php"; // $_SERVER['DOCUMENT_ROOT'] - указывает корневую директорию сайта
include и include_once
include() — конструкция, предназначенная для включения файлов в код сценария PHP во время исполнения сценария PHP. При обработке кода инструкция заменяется на содержимое присоединяемого файла. Предлагаю сразу рассмотреть пример.
Рассмотрим работу include на примере двух файлов: index.php и text.php. Для простоты работы допустим, что они лежат в одной директории.
Код PHP (файл index.php)
echo "Обычный текст, содержащийся в основном файле";
include 'text.php'; // подключаем содержимое файла text.php
?>
Код PHP (файл text.php)
echo "Текст, содержащийся в подключаемом файле";
?>
В результате работы файла index.php отобразится:
Обычный текст, содержащийся в основном файле
Текст, содержащийся в подключаемом файле
Правда удобно? Теперь, поменяв содержимое в файле text.php будет совершенно другой результат работы index.php!
Теперь поговорим о другой конструкции — include_once. Она работает абсолютно также как и include, только создана позже и для тех случаев, когда нельзя повторно подключить файл. Например, Вы боитесь, что в результате ошибки можете подключить файл 2 и более раз, что скажется на некорректной работе страницы и получении соответствующего сообщения об ошибке.
include_once 'text.php'; // файл text.php будет подключен только один раз
// повторное подключения ниже не будет учтено и отображено
// и из-за него не будет выведено сообщение об ошибке
include_once 'text.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
include "http://www.example.com/include/ваш_файл.php";
// DOCUMENT_ROOT - обозначает корневую директорию ресурса
include $_SERVER['DOCUMENT_ROOT']."/include/ваш_файл.php";
6. Если у Вас не подключается файл и не отображается никакой ошибки, то в директории с файлом, который подключаете, создайте файл .htaccess со следующим содержимым
php_flag display_errors On
или в файле php, перед подключением, вставьте следующую строку
И та, и другая настройки будут принудительно отображать ошибки
Как подключить файл в PHP?
Допустим у меня есть файл /file/file.php и мне нужно в нем подключить файл /config.php, так как файл находится на директорию ниже то я не могу подключить его через require ‘config.php’; так как он начинает искать этот файл относительно папки /file/. Можно ли это как то сделать без указания абсолютного пути?
И ещё вопрос, почему через openserver нормально подключается файл если его записать как require ‘file\file.php’; а уже когда на хостинг заливаю то выдаёт ошибку, типа надо было писать ‘file/file.php’;.
Заранее спасибо за ответы
Оценить 1 комментарий
ericnolimit не забывайте, что если вы посчитали какой-либо ответ или ответы верными, их необходимо пометить таковыми, нажав на соответствующую кнопку рядом с ними. Этим вы равно как отблагодарите авторов ответов, так и поможете тем, кто прочитает ваш вопрос в будущем, выбрать правильный вариант действий.
Есть несколько моментов, которые нужно учесть при подключении файлов.
- В целом есть два варианта их подключения, через require и через include . Оба сделают одно и то же, но второй вариант выдаст warning при отсутствии файла, а первый — fatal error .
- Оба варианта имеют свои подварианты, а именно require_once и include_once — в случае использования такой записи файлы включаются в код единожды, и если вы где-то два раза попытаетесь подключить их, подключение произойдет только один раз.
- Путь, который по умолчанию используется в обоих вариантах, зависит от настроек среды, в каких-то случаях он может быть не задан, и тогда путь считается от файла, в котором вы подключаете другие файлы, а в каком-то будет установлена переменная конфигурации include_path и вся ваша логика нарушится. В связи с этим настоятельно рекомендуют подключать файлы с помощью такой конструкции: include __DIR__ . ‘/dir/file’; , где __DIR__ — «магическая» переменная, содержащая абсолютный путь до папки вашего срипта.
- Слеши в пути отличаются в разных системах, получить нужный вам можно через предопределенную константу DIRECTORY_SEPARATOR .
- Если вы подключаете конкретно конфиг вашей системы, вы можете сделать вот так в скрипте: $config = include __DIR__ . ‘/config.php’; , а в конфиге сделать что-то вроде return = [‘pass’=>’. ‘, login=>’. ‘] , после чего в основном скрипте получать переменные через что-то вроде config[‘pass’] — в целом, работать все будет и без этого, но зато так повысится читаемость вашего кода.
Include, Require и комментарии PHP
На приведенном ниже изображении показан PHP-файл с однострочным комментарием и комментарием из нескольких строк:
PHP Include и PHP include_once
Оператор include используется для подключения других файлов. Он доступен в двух вариантах: include и PHP include_once . Последний игнорируется интерпретатором, если файл уже был подключен.
Синтаксис оператора include :
- Include/include_once — это оператор, который подключает файл;
- ‘file_name’ — имя подключаемого файла.
Пример: Include / Include_once
Предположим, что вы разрабатываете сайт, который содержит одинаковое меню навигации на всех страницах.
В этом случае можно создать общий header , а затем подключать его на каждой странице с помощью include path PHP . Давайте посмотрим, как это можно сделать.
header.php Home About us Services Contact Us index.php
В результате использования include PHP путь к файлу будет выведен заголовок страницы.
PHP Require & PHP require_once
Оператор require имеет два варианта: require и require_once . Он также используется для подключения файлов.
Require_once игнорируется, если требуемый файл уже был добавлен любым из четырех операторов.
Он имеет следующий синтаксис:
- require/require_once — оператор подключения файла;
- ‘file_name’ — файл, который должен быть подключен.
Разница между Include и Require
Include | Require |
Выдает предупреждение при возникновении ошибки. | Не выдает предупреждение. |
Выполнение скрипта продолжается при возникновении ошибки. | Выполнение скрипта останавливается при возникновении ошибки. |
Пример: Require
Предположим, что мы разрабатываем приложение для работы с базой данных. Можно создать конфигурационный файл, который будет подключаться на всех страницах проекта с помощью require :
Рассмотрим пример подключения конфигурационного файла:
Require и Require_once
- Заголовок, футер, сайдбар могут быть общими для многих страниц. Это позволяет изменять сайт, обновив один файл;
- Параметры конфигурации базы данных, пользовательские функции могут быть общими для многих страниц, что позволяет обеспечить использование на сайте / в приложении одинаковых настроек;
- Операторы PHP include или require используются для подключения файлов;
- Include_once / require_once игнорируется, если запрашиваемый файл уже подключен с использованием любого из четырех операторов;
- Оператор include выдает предупреждение и продолжает исполнение кода, если запрашиваемый файл не был найден;
- Оператор require вызывает фатальную ошибку и останавливает выполнение скрипта;
- В большинстве случаев должен использоваться оператор include , за исключением ситуаций, когда без запрашиваемого файла не может работать весь скрипт.
Заключение
- Комментарии используются, чтобы помочь нам понять код;
- Однострочные комментарии начинаются с двойной косой черты // ;
- Комментарии из нескольких строк заключены в /* */ ;
- Операторы PHP include , include_once , require и require_once используются для подключения файлов;
- Include_once / require_once игнорируются, если запрашиваемый файл уже подключен с использованием любого из четырех операторов;
- Оператор include выдает предупреждение и продолжает исполнение кода, если запрашиваемый файл не был найден;
- Оператор require вызывает фатальную ошибку и останавливает выполнение скрипта;
- В большинстве случаев должен использоваться оператор include , за исключением ситуаций, когда без запрашиваемого файла не может работать весь скрипт.
Вадим Дворников автор-переводчик статьи « PHP Include, Require & Comments »
Пожалуйста, опубликуйте ваши отзывы по текущей теме материала. За комментарии, отклики, дизлайки, подписки, лайки огромное вам спасибо!
Подборка курсов по PHP
4.4 GeekBrains еще 1 курс
4.4 Skillbox еще 3 курса