PHP → Зачем писать include("./file.php");
16 июня 2011
Зачем пишут ./ в начале файла?
require_once "./file.php";
include("./file.php");
Дело в том, что если в директиве include_path файла php.ini есть . точка –
; Unix include_path include_path=".:/php/includes" ; Windows include_path include_path=".;c:\php\includes"
это разрешит относительные инклюды, т.к. . означает текущую директорию (dirname(__FILE__), кот. может не совпадать с рабочей директорией – из кот. вызван основной скрипт - getcwd()). Это полезно для файлов библиотек, зависимых друг от друга и лежащих в одной папке.
Тем не менее, если нужный для инклюда файл находится относительно рабочей директории – рекомендуется явно указывать "./file.php", чтобы PHP не проверял каждый раз текущую директорию скрипта, вызывающего include(). (Конечно, если сам скрипт c инклюдом никто не инклюдит, то разницы не будет).
Из твиттера (#): Если имя файла начинается с ../ – PHP не использует include_path, не ищет относительно директории php-файла с этой строчкой, а только относительно work dir (т.е. того файла, кот. был запущен). Чтобы инклюдить относительно конкретного скрипта:
require_once dirname(__FILE__)."/../file.php";
