PHP включает в себя пути в каталогах

Я просмотрел несколько разных вопросов о той же проблеме, что и у меня. Я принял решение и адаптировал его к своему собственному проекту.

Вот моя структура каталогов.

/css
 -style.css
/includes
 -shop.css
 -header.php
 -footer.php
/php
/js
/shop
 -index.php

-index.php <-- homepage
-config.php

Внутри моего config.php у меня есть

define('ROOT_PATH',$_SERVER['DOCUMENT_ROOT']);

Мой заголовок.php

<!--?php include './config.php';?-->



 
 <!--?php echo '<link href="'.ROOT_PATH.'/css/style.css" rel="stylesheet"-->';?>
 <!--?php if ($_SERVER['REQUEST_URI'] == '/shop/'){echo '<link href="'.ROOT_PATH.'/includes/shop.css" rel="stylesheet"-->';} ?>

Единственная проблема заключается в том, что для любой другой страницы, кроме корневого файла index.php, путь к файлу config.php становится неправильным. Таким образом, пути CSS становятся некорректными, поскольку ROOT_PATH не определяется нигде.

Каким будет лучший способ обработки путей при использовании?

4 ответа

Используйте $_SERVER['HTTP_HOST']. $ _ SERVER ['DOCUMENT_ROOT'] получает корень документа, например, var/com/images. $_SERVER['HTTP_HOST'] получит текущий url, например http://example.com/images.TYour код должен выглядеть так:

define('ROOT_PATH',$_SERVER['HTTP_HOST']);

И включите этот путь

<p> Надеюсь, это поможет вам</p>


Вы используете фактический путь к файловой системе сервера, чтобы ссылаться на ваши таблицы стилей. Это похоже на попытку сделать что-то вроде:

<p> и не будет работать.</p> <p> Я бы рекомендовал изменить это на что-то вроде:</p> <pre class="prettyprint linenums">define('ROOT_PATH', 'http://www.your-website-url.com/');</pre> <p> С Уважением,</p>


Возможно, используя относительные пути для include в другом файле index.php.


то, что вам нужно сделать, это включить в свой конфиг абсолютный, а не относительный. вы начинаете путь с точки ./config что означает ее относительный. вместо этого настройте свой заголовок, чтобы включить конфигурационный файл с абсолютным путем, подобным этому

Таким образом, любая страница может найти файл независимо от его местоположения в структуре каталогов.

licensed under cc by-sa 3.0 with attribution.