Intereting Posts
Как перейти на статическую папку в Laravel Создание экземпляра класса поставщика в конструкторе класса Как разрешить доступ только к моей базе данных MySQL из приложения iOS? (Использование webapp в качестве шлюза для db) Запрос POST с корпусом JSON Экспорт данных csv php mysql – все данные экспортируются в один столбец Масштабирование приложения чата – короткий опрос и длительный опрос (AJAX, PHP) Open Grammar Checker Функция PHP для преобразования Unicode в специальные символы? php с использованием специальных символов Добавить пробел после каждого 4-го символа Можно ли написать парсер электронной почты в PHP? Как я могу использовать CodeIgniter для загрузки определенных страниц с использованием SSL? Как преобразовать объекты HTML, такие как & # 8211; к их эквивалентам символов? Лучший способ разбора недопустимого HTML в PHP Регулярное выражение PHP – повторение соответствия группы

вызов включает из включенного файла

Итак, рассмотрим эту структуру каталогов

  • /include_one.php
  • /include_two.php
  • /directory/main_file.php

Предположим, что я в /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'); ?> в <?php echo 'including folder1/includeone.php<br />'; include('folder1/includeone.php'); ?> 

includeone.php

 <?php echo 'including folder2/includetwo.php<br />'; include('folder2/includetwo.php'); ?> в <?php echo 'including folder2/includetwo.php<br />'; include('folder2/includetwo.php'); ?> 

includetwo.php

 <?php echo 'done<br />'; ?> 

и выход

включая ../include.php
включая папку1 / includeone.php
включая папку2 / includetwo.php
сделанный

Solutions Collecting From Web of "вызов включает из включенного файла"

«Относительный путь включения» не смещается во включенный файл … Это означает, что использование относительных путей обычно заканчивается плохо.

Лучшее решение, которое я использую почти все время, – это всегда работать с абсолютными путями – и вы можете смешивать родственников и абсолютные пути с помощью __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 в один каталог вверх.

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

Я использую этот код:

 if(!isset($TO_HOME_DIR)) $TO_HOME_DIR="../"; 

И я включаю файл:

 include_once($TO_HOME_DIR."common/include_one.php"); 

Если if(!isset($TO_HOME_DIR)) , не важно, сколько вы включаете файл в включенный файл в включенный файл в include ….. Используется только объявление первого файла – и основного файла – $ TO_HOME_DIR.

Второе преимущество этого подхода состоит в том, что если вы меняете каталог файла, вам нужно только изменить одну строку кода; Объявление $ TO_HOME_DIR. 🙂