12

我正在尝试在包含所有 CSS 链接信息的头文件中链接一个单独的 php 文档,这样如果我想更改网站的设计,我只需在一个位置更改 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>

CSS 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 设置为正确的位置,但我的样式没有显示出来。我错过了什么吗?有没有更可靠的方法来设置它?

4

4 回答 4

12

根据我的经验,回应 Mike 上面所说$_SERVER['DOCUMENT_ROOT']的只是在服务器上查找文件的最佳选择。如果您需要 php 包含或需要某些内容,请使用DOCUMENT_ROOT.

但是,css 文件是客户端。它们包含在相对网站路径中。如果你要这样做

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

href 中的开头/告诉浏览器始终从您的域的根目录中检索它:http://yourdomain.com/styles/newscontent.css.

于 2012-12-07T18:43:07.683 回答
5

您必须使用$_SERVER["DOCUMENT_URI"]而不是$_SERVER["DOCUMENT_ROOT"],如下所示:

echo "<link rel='stylesheet' type='text/css' href='" . dirname($_SERVER['DOCUMENT_URI']) . "/styles/basicblue.css'/>";
于 2012-12-07T18:44:43.970 回答
2

我结束了减去网络根路径以获得相对路径

str_replace($_SERVER['DOCUMENT_ROOT'],'',$_SERVER["SCRIPT_FILENAME"]);

所以/home/u/username/example.com/public_html/webfolder/index.php 你会得到/webfolder/index.php

编辑:在构造的情况下,您的文件名会以某种方式重复文档根目录,因此上面的代码将无法正常工作。这更防弹(计数符号并删除它们)

substr($_SERVER["SCRIPT_FILENAME"],strlen($_SERVER['DOCUMENT_ROOT']));
于 2020-12-16T12:31:57.240 回答
0

我的案例包括一个 JS 脚本,它与 PHP 脚本位于同一文件夹中。

我使用以下内容获取从站点根目录到脚本文件夹的路径:

<script src="<?php echo str_replace($_SERVER['DOCUMENT_ROOT'], '', __DIR__); ?>/script.js"></script>

这工作正常。

于 2021-11-18T11:43:57.187 回答