Общее
Часто приходится хранить всякие везде-используемые данные/функции в отдельных файлах, и потом подключать, используя include[_once]/require[_once]. Но эти файлы обычно не парсятся сервером, то есть, их можно смотреть через браузер, этого мы и хотим избежать. Давать таким файлам расширение .php не очень правильно, так как их можно вызвать через браузер, и, хотя мы и не увидим содержимое, но, наверняка, у нас начнут вылазить какие-либо ошибки PHP, так как код внутри файлов обычно расчитан на исполнеие в определенном окружении (наличие коннекта к базе чтение файлов/определенные значения констант/переменных). Есть 2 выхода по сути похожих
- поместить все .inc файлы за пределами DOCUMENT_ROOT Apache
- написать .htaccess чтобы запретить доступ ко всем файлам с определенными расширениями
Пример:
# запретить скачивание файлов с указанными расширениями <FilesMatch ".(inc|sql|…другие расширения…)$"> order deny,allow # запретить доступ отовсюду deny from all # разрешить доступ с вашего ip(если он у вас, конечно, статический) allow from <ваш ip> </FilesMatch>
require
Загружает и вставляет код в PHP скрипт. Если такого файла, кода нет в наличии, прекращается дальнейшая работа всего php скрипта. В случае если будет вызываться такая же инструкция в том же скрипте, то будет либо ошибка либо игнорирование загрузки файла - то есть будет тупо возвращена пустота.
Используется в основном для загрузки PHP функций и наработанных библиотек.
Варианты вызова:
require 'файл';
require('файл');// такой мне больше нравится, четче видно
include
Загружает и вставляет код в PHP скрипт. Если такого файла, кода нет в наличии, то основной php скрипт переходит к выполнению кода после оператора include .В случае, если файл уже был ранее загружен то он загрузится повторно. Нельзя использовать для загрузки одних и тех модулей с функциями, будет ошибка.
Используется в основном для загрузки HTML вставок в страницы.
Варианты вызова:
include 'файл';
include ('файл');// такой мне больше нравится, четче видно
Существуют также еще функции require_once и include_once, приставка once означает загрузку данных в PHP скрипт только один раз. Если такая функция встретится два раза в одном скрипте, то код будет выполнен только у первого этапа, все остальные будут проигнорированы, тем самым увеличив скорость выполнения скрипта.