У меня есть сценарий, когда я хочу вернуть путь к определенному родительскому каталогу. Вот пример папки strcuture ( [something] – это папка)
index.php [components] header.php footer.php [pages] somePage.php [somePageSubPages] someSubPage.php
Поэтому мои страницы содержания выглядят примерно так:
<?php include('components/header.php'); ?> <!-- CONTENT STUFF --> <?php include('components/footer.php'); ?>в<?php include('components/header.php'); ?> <!-- CONTENT STUFF --> <?php include('components/footer.php'); ?>в<?php include('components/header.php'); ?> <!-- CONTENT STUFF --> <?php include('components/footer.php'); ?>
Это работает для index.php но не для somePage.php и someSubPage.php . То, что я хочу сделать, это создать функцию, возвращающую путь обратно в главную директорию, поэтому я могу добавить это к включенным и другим материалам:
$relPath = getPathToRoot($rootDirName); include($relPath . 'components/header.php');
И функция возвращает только пустую строку или ../../ .
Я думал об использовании __FILE__ а затем просто подсчитывал / -символы между данным $ rootDirName и концом строки. Тем не менее, я хотел бы спросить, является ли это надежным способом и как это будет выглядеть в PHP. (Я не очень много работаю с PHP …)
Я бы удостоверился, что вы всегда знаете корень вашего сайта, чтобы вы могли взять его оттуда.
Для этого вы можете пойти как минимум двумя способами:
include MY_SITE_ROOT . '/path/to/file.php'; include $_SERVER['DOCUMENT_ROOT'] . '/path/to/file.php'; Вы можете использовать .. чтобы попасть в родительский каталог:
<?php // somePage.php include('../components/header.php'); ?>