Так, исследование этой структуры каталогов
Предположите, что я нахожусь в/directory/main_file.php, и я звоню include('../include_one.php');
в include_one.php, для включения include_two.php. Сделайте я должен звонить include('include_two.php);
или include('../include_two.php');
?
Таким образом, мой вопрос: Когда включая файл, 'родственник, включают путь', смещенный во включенный файл, или это остается в основном включая файл?
Я знаю, что лучшая альтернатива должна была бы иметь config.php, который содержит root_path, однако это не возможно на данном этапе.
структура каталогов
/include.php
/start/start.php
/folder1/includeone.php
/folder1/folder2/includetwo.php
и вот содержание каждого файла
start.php
<?php
echo 'including ../include.php<br />';
include('../include.php');
?>
include.php
<?php
echo 'including folder1/includeone.php<br />';
include('folder1/includeone.php');
?>
includeone.php
<?php
echo 'including folder2/includetwo.php<br />';
include('folder2/includetwo.php');
?>
includetwo.php
<?php
echo 'done<br />';
?>
и вывод
включая../include.php
включая folder1/includeone.php
включая folder2/includetwo.php
готово
«Относительный включаемый путь» не переносится во включаемый файл ... Это означает, что использование относительных путей обычно заканчивается плохо.
Лучшее решение, которое я использую почти все время, - всегда работать с абсолютными путями - и вы можете смешивать родственные и абсолютные пути, используя __ DIR __
, чтобы получить каталог, содержащий файл, в котором это написано.
Например, в include_one.php
вы должны использовать:
require_once __DIR__ . '/include_two.php';
Чтобы включить файл include_two.php
, который находится в том же каталоге, что и include_one.php
.
И в main_file.php
вы должны использовать:
require_once __DIR__ . '/../include_one.php';
Чтобы включить файл include_one.php
, который находится на один каталог выше.
При этом ваши включения будут работать независимо от того, из какого файла они вызываются.