Прийнята відповідь Пекки є неповною і, загалом, хибною. Якщо файл надається як відносний шлях, називається мовна конструкціяinclude
шукатиме його наступним чином.
По-перше, він пройде через шляхи змінної середовища include_path
, які можна встановити за допомогою ini_set
. Якщо це не вдасться, він здійснить пошук у власному каталозі виклику скрипта dirname(__FILE__)
( __DIR__
з php> = 5.3.) Якщо це також не вдасться, лише тоді він здійснить пошук у робочому каталозі! Просто виявляється, що за замовчуванням include_path
починається змінна середовища .
, яка є поточною робочою каталогом. Це єдина причина, чому він шукає спочатку в поточному робочому каталозі. Дивіться http://php.net/manual/en/function.include.php .
Файли включаються залежно від заданого шляху до файлу або, якщо такого не вказано, вказаного вказати include_path. Якщо файл не знайдений у include_path, включення остаточно перевірить у власному каталозі виклику скрипта та поточному робочому каталозі, перш ніж вийти з ладу.
Отже, правильна відповідь на першу частину питання полягає в тому, що не має значення, де знаходиться включений скрипт виклику. Відповідь на останню частину запитання полягає в тому, що початковий робочий каталог, в контексті веб-сервера, - це каталог викликаного скрипту, сценарій, який включає всі інші під час роботи з PHP. У контексті командного рядка початковий робочий каталог є будь-яким, який він є, коли в запит викликається php, не обов'язково каталог, де знаходиться названий скрипт. Однак поточний робочий каталог можна змінити під час роботи за допомогою функції PHP chdir
. Дивіться http://php.net/manual/en/function.chdir.php .
Цей пункт додано для коментарів до інших відповідей. Деякі згадували, що покладатися на include_path
менш надійне, і тому бажано використовувати повні шляхи, такі як ./path
або __DIR__ . /path
. Деякі пішли далеко, сказавши, що покладатися на робочий каталог .
сам по собі не є безпечним, оскільки його можна змінити. Однак у деяких випадках потрібно покладатися на значення середовища. Наприклад, ви можете встановити include_path
порожній, так що каталог виклику скрипту - це перше місце, яке він буде шукати, навіть перед поточним робочим каталогом. Код може бути вже написаний та регулярно оновлюватися із зовнішніх джерел, і ви не хочете вставляти префікс __DIR__
щоразу, коли код оновлюється.