Относительные пути и вложенные включает [дубликаты]

1

У меня есть файл navbar.php, который находится в папке views/general. Он включает в себя несколько файлов относительного пути.. /controllers/file1.php и т.д.

Я могу включить только файл navbar.php в другие файлы в одной и той же папке просмотра/общей папки. Если я попытаюсь включить его в файл за пределами этого, например views/signup,

включенные пути, содержащиеся в файле navbar.php(../controllers/file1.php и т.д.), больше не будут иметь значения.

Как я могу это решить, поэтому navbar.php можно использовать из любого места?

Теги:
relative-path
include-path

3 ответа

4
Лучший ответ

У меня была аналогичная задача, и я создал один файл, который определяет константы для всех соответствующих путей, которые я хочу, чтобы они могли звонить по мере необходимости. Я включаю этот файл на все мои страницы (я определяю $ urlRoot, чтобы он работал во всех средах и мог перемещаться в разных доменах и т.д.):

Файл: pathData.php (добавлен MENUDIR для вашего примера):

$baseDir = dirname(__DIR__) . '/';
$rootUrl = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/';
define('ROOTURL', $rootUrl);
define('BASEDIR', $baseDir);
define('INCLUDES', $baseDir . 'includes/');
define('INCLUDESURL', ROOTURL . 'includes/');
define('JQUERYURL', ROOTURL . 'includes/jquery/');
define('MENUDIR', ROOTURL . 'views/general/');

Затем в каждом файле я включаю этот файл с include, который включает относительный путь каталога. Например:

include("pathData.php");
or
include("../pathData.php");
or
include("../../pathData.php); 
etc.

Таким образом, в вашем случае вы можете (в зависимости от того, где находится файл pathData):

include("../pathData.php");
include(MENUDIR . "navbar.php");
etc...
  • 1
    Это работает на окнах, а также Linux. :-)
  • 0
    @RyanVincent - просто повезло - я до боли незнаком с Windows. Ха!
Показать ещё 1 комментарий
0

Вы также можете обобщить все из корневого каталога вашего веб-сайта, используя переменную $_SERVER['DOCUMENT_ROOT'] которая будет находиться в каталоге, где должен располагаться ваш index.php.

Используйте следующее:

include($_SERVER['DOCUMENT_ROOT'] . 'path/from/root/website/location/to/file.php');
0

Если вы используете PHP 5. 3+:

include __DIR__ . '/relative/path/from/this/file.php';

__DIR__ - магическая константа, содержащая абсолютный путь к текущему файлу.

Если вы используете более ранние версии PHP:

include dirname(__FILE__) . '/relative/path/from/this/file.php';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню