Динамичные PHP включают на основе текущего пути к файлу

Я хочу найти, что метод включает некоторые файлы на основе текущего пути к файлу.. например:

У меня есть "website.com/templates/name1/index.php", это "index.php должно быть уникальным файлом, который я буду использовать во многих различных каталогах на различных глубинах, таким образом, я захочу сделать код универсальным, таким образом, я ничего не должен изменять в этом файле..

Таким образом, если этот "index.php" расположен в

"website.com/templates/name1/index.php"

чем он должен включать файл, расположенный здесь:

"website.com/content/templates/name1/content.php"

другой пример:

"website.com/templates/name2/index.php"

чем он должен включать файл, расположенный здесь:

"website.com/content/templates/name2/content.php"

Также я хочу превысить "Предупреждение: include_once () [function.include-после-того-как]: обертка http:// отключена в конфигурации сервера allow_url_include=0" вид ошибки.. потому что отключен и небезопасен..

Существует ли способ достигнуть этого?Спасибо!

11
задан Adrian M. 11 April 2010 в 17:23
поделиться

2 ответа

I думаю, вам нужно использовать константы __ FILE __ (у него есть два символа подчеркивания в начале и в конце имени) и константы DIRECTORY_SEPARATOR для работы с файлами на основе текущего пути к файлу.

Например:

<?php
  // in this var you will get the absolute file path of the current file
  $current_file_path = dirname(__FILE__);
  // with the next line we will include the 'somefile.php'
  // which based in the upper directory to the current path
  include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'somefile.php');

Использование константы DIRECTORY_SEPARATOR более безопасно, чем использование символов "/" (или "\" ), потому что Windows и * Разделители каталогов nix различны, и ваш интерпретатор будет использовать правильное значение на разных платформах.

31
ответ дан 3 December 2019 в 02:30
поделиться

Я бы сделал что-то простое, как:

$dir = str_replace('website.com/','website.com/content/',__DIR__);
include "$dir/content.php";

И ваша проблема с HTTP оберткой, кажется, не имеет ничего общего с этим. Что вы имеете в виду под превышением? Обычно вы никогда не хотите делать удаленное включение.

0
ответ дан 3 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: