Ответ 1
Это может помочь: (от http://php.net/manual/en/function.include.php)
Сначала отображаются файлы для включения в каждой строке include_path относительно текущего рабочего каталога, а затем в каталоге тока script. Например. если ваш include_path - это библиотеки, текущие Рабочий каталог -/www/, вы включая include/a.php, и есть включить "b.php" в этот файл, b.php сначала просматривается в /www/libraries/ а затем в /www/include/. Если имя файла начинается с./или../, это выглядит только в текущем рабочем каталога или родителя текущего рабочий каталог, соответственно
В вашем вопросе говорится:
Если я хочу включить другой файл внутри footer.php, я должен это сделать относительно файла index.php( тот, который включает его).
Это верно, только если путь к файлу, который вы пытаетесь выполнить include()
, начинается с ./
или ../
. Если вам нужно добавить файл над текущим файлом, используя относительный путь, вы можете (как вы сказали) использовать:
include( dirname(__FILE__) . '/../file.php')
Если вы определяете абсолютный путь, вы также можете добавить это к текущему include_path:
set_include_path(get_include_path() . PATH_SEPARATOR . '/absolute/path');
Затем вы можете выполнить все свои действия относительно "/absolute/path/".