PHP获取相对于站点根目录的文档路径

时间:2012-12-07 18:29:54

标签: php html css

我正在尝试在包含所有CSS链接信息的头文件中链接一个单独的php文档,这样如果我想更改网站的设计,我只需要在一个位置更改css路径(特别是各种颜色方案。当我添加更多方案时,我可以将它们放在这个文件中的switch语句中,而不是遍历每一页。

我正在尝试编写代码,以便无论在哪个服务器上运行它(我的本地测试服务器或远程站点服务器)都可以正常工作,而不会更改任何路径信息。

根据我的阅读,似乎$_SERVER['DOCUMENT_ROOT']是查找网站基本文件夹路径的最佳方式,这样我就可以找到服务器文件夹/ css文件,无论页面文件位于何处。< / p>

以下是我如何设置它的示例:

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

3 个答案:

答案 0 :(得分:10)

回应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

答案 1 :(得分:2)

您必须使用$_SERVER["DOCUMENT_URI"]代替$_SERVER["DOCUMENT_ROOT"],如下所示:

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

答案 2 :(得分:0)

我结束了减去Web根路径以获得相对路径的操作

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

因此代替了/home/u/username/example.com/public_html/webfolder/index.php 您将获得/webfolder/index.php