PHP получает путь к документу относительно корня сайта

Я пытаюсь связать отдельный php-документ в файлах заголовков, который содержит всю информацию о ссылке на CSS, поэтому, если я хочу изменить дизайн сайта, мне нужно изменить путь css в одном месте (в частности, для различные цветовые схемы.Когда я добавляю больше схем, я могу просто поместить их в оператор switch в этом одном файле вместо того, чтобы проходить через каждую страницу.

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

Из того, что я читал, кажется, что $_SERVER['DOCUMENT_ROOT'] - это лучший способ найти путь к базовой папке сайта, чтобы я мог найти файлы каталога /css, независимо от того, где находится файл страницы.

вот пример того, как я его настроил:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>

<!--Meta Information-->

<!--CSS Info-->
<?php 
    require_once("styles/cssstyle.php");
?>

<title></title>
</head>
<body>

<!--pushes site down from top of screen -->
<div id="topmargin"></div> 

<!-- sets div for site content (puts in middle) -->
<div id="_body">          

    <div id="banner">                        
        <div class="logo"></div>      
        <div class="text"></div>
        <div class="bannerstrip"></div>
    </div>

    <!--portion for site navigation-->
    <div id="navigation">                               
        <ul class="navlinks">                            
            <li><a href="index.php">home</a></li>
        </ul>
    </div>

    <!--Holds all site usable/readable content-->
    <div id="leftwindow">                              

    </div>

    <div id="rightwindow">

    </div>

    <div id="rightwindow">

    </div>
</div>


</body>
</html>

и файл PHP php выглядит следующим образом:

   <?php
echo "<link rel='stylesheet' type='text/css' href='styles/default.css'/>";
echo "<link rel='stylesheet' type='text/css' href='" . $_SERVER['DOCUMENT_ROOT'] . "styles/basicblue.css'/>";  
echo "<link rel='stylesheet' type='text/css' href='" . $_SERVER['DOCUMENT_ROOT'] . "styles/forms.css'/>";
echo "<link rel='stylesheet' type='text/css' href='" . $_SERVER['DOCUMENT_ROOT'] . "styles/loginform.css'/>";
echo "<link rel='stylesheet' type='text/css' href='" . $_SERVER['DOCUMENT_ROOT'] . "styles/newscontent.css'/>";
?>

Я уверен, что DOCUMENT_ROOT настроен на правильное местоположение, но мои стили не отображаются. я что-то упускаю? Есть ли более надежный способ настроить это?

Ответ 1

Повторяя сказанное Майком, по моему опыту, $_SERVER['DOCUMENT_ROOT'] - только лучший вариант для поиска файлов на сервере. Если вам нужен php для включения или чего-то еще, найдите путь на стороне сервера с помощью DOCUMENT_ROOT.

Тем не менее, CSS файлы на стороне клиента. Они включены из относительного пути сайта. Если бы вы вместо этого просто сделать

<link rel='stylesheet' type='text/css' href='/styles/newscontent.css'/>

Открытие / в href говорит браузеру всегда получать его из корня вашего домена: http://yourdomain.com/styles/newscontent.css.

Ответ 2

Вы должны использовать $_SERVER["DOCUMENT_URI"] вместо $_SERVER["DOCUMENT_ROOT"], например:

echo "<link rel='stylesheet' type='text/css' href='" . dirname($_SERVER['DOCUMENT_URI']) . "/styles/basicblue.css'/>";