Какой файл будет включен, если файл существует в пути и в локальном каталоге? - PullRequest
0 голосов
/ 11 марта 2011

Если у меня есть файл в пути с именем inc.php и другой файл с именем inc.php в том же каталоге, что и index.php, а в index.php я помещаю

include('inc.php')

Какой файл будет включен?

Ответы [ 3 ]

4 голосов
/ 11 марта 2011

Когда вы выполняете включение, PHP просматривает каждую запись в пути включения, проверяя наличие файла, пока не найдет его, после чего он включает файл из этой записи в путь включения.

ОбычноВключенный путь имеет.(текущий рабочий каталог) в качестве первой записи.

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

2 голосов
/ 11 марта 2011

PHP будет проходить через ваш include path слева направо и для каждой папки проверяет, существует ли файл с таким именем в этой папке.

Включает первый найденный файл.

Если вы включите путь, выглядит как ".:/some/dir/:/some/other/dir", он сначала будет выглядеть в текущей папке. Затем проверьте остальные, если ничего не находит.

Таким образом, обычно он включает файл в той же папке.

Чтобы увидеть, как выглядит ваш включаемый путь, используйте (например) echo ini_get("include_path");

1 голос
/ 11 марта 2011

Как можно найти в документации по функциям include():

Если файл не найден в include_path, include (), наконец, проверит вызовСобственный каталог скрипта и текущий рабочий каталог до сбоя.

Поэтому сначала ищется include_path, а затем текущий каталог (Но ваш include_path может включать текущий каталог, если есть .внутри, может быть, даже сначала это зависит от конфигурации вашего сервера).

...