вероятно, проще просто использовать абсолютный путь к ссылке:
set_include_path('/path/to/files');
таким образом, у вас есть ориентир для всего вашего будущего. Включения обрабатываются относительно точки, в которую они были вызваны, что может вызвать некоторую путаницу в определенных сценариях.
в качестве примера, с примером структуры папок (/home/files
):
index.php
test/
test.php
test2/
test2.php
// /home/files/index.php
include('test/test.php');
// /home/files/test/test.php
include('../test2/test2.php');
если вы вызываете index.php, он попытается включить следующие файлы:
/home/files/test/test.php // expected
/home/test2/test2.php // maybe not expected
что может быть не тем, что вы ожидаете. вызов test.php вызовет /home/files/test2/test.php
, как и ожидалось.
В заключение, включение будет относительным по отношению к исходной точке вызова. чтобы уточнить, это влияет на set_include_path()
, если оно также является относительным. Рассмотрим следующее (используя ту же структуру каталогов):
<?php
// location: /home/files/index.php
set_include_path('../'); // our include path is now /home/
include('files/test/test.php'); // try to include /home/files/test/test.php
include('test2/test2.php'); // try to include /home/test2/test2.php
include('../test3.php'); // try to include /test3.php
?>