PHP $ _SERVER ['DOCUMENT_ROOT']

时间:2012-11-15 09:49:14

标签: php

        $username;
        $welcomeMessage;
        if( isset( $_SESSION['username'] ) ){
            $username = $_SESSION['username'];
            $welcomeMessage = "Hello $username! | ";
            $welcomeMessage .= '<a href="'.$_SERVER['DOCUMENT_ROOT'].'/nmc/Admin/LogoutProcessor.php">Logout</a>';
        } else {
            $welcomeMessage = "Welcome | ";
            $welcomeMessage .= '<a href="'.$_SERVER['DOCUMENT_ROOT'].'/nmc/Admin/LoginPage.php">Login</a>';
        }

上面的代码返回“file:/// C:/xampp/htdocs/nmc/Admin/LoginPage.php”

我使用xampp开发一个网站,基本上使用自己的服务器处理,因此我不能使用上面的链接。我在不同目录中有几个网页必须链接到LoginPage.php,我需要一个标准链接。上面的代码在一个类中,不同目录中的其他页面可以调用它。

有谁能告诉我如何解决这个问题?

谢谢!

5 个答案:

答案 0 :(得分:13)

$ _ SERVER ['DOCUMENT_ROOT']返回

  

正在执行当前脚本的文档根目录,如服务器配置文件中所定义。

您可以使用$_SERVER['HTTP_HOST']或绝对路径,例如<a href="/nmc/Admin/LoginPage.php">Login</a>

答案 1 :(得分:8)

在这种情况下,最好创建一个config.php文件并将其保存在根目录中。在配置文件中,您定义了几个参数。

在每个页面中调用此配置文件。您的配置文件可能类似于下面的配置文件。

define('APP_NAME',"beta");  
define('HTTP_SERVER', 'http://localhost/'); 
define('SITE_NAME', 'http://localhost/');   
define('DOCUMENT_ROOT',$_SERVER['DOCUMENT_ROOT'].APP_NAME); 

您还可以定义您认为将在多个地方使用的图像,CSS等目录。

所以而不是

$welcomeMessage .= '<a href="'.$_SERVER['DOCUMENT_ROOT'].'/nmc/Admin/LogoutProcessor.php">Logout</a>';

你可以写,

$welcomeMessage .= '<a href="'.HTTP_SERVER.'/nmc/Admin/LogoutProcessor.php">Logout</a>';

答案 2 :(得分:5)

 $_SERVER['DOCUMENT_ROOT']

返回物理文件系统路径。它不是HTTP URL。

尝试将其删除以使用绝对网址路径:

 <a href="/nmc/Admin/LoginPage.php">Login</a>

或尝试使用$ _SERVER ['HTTP_HOST']代替。

BTW,read $_SERVER documentation

答案 3 :(得分:0)

如果您使用的是Wamp Server或类似文件,“/”是“www”文件夹的文档根目录,那么您必须编写"/yoursitesfoldername/nmc/Admin/LogoutProcessor.php"。< / p>

答案 4 :(得分:0)

我继承了一个在任何地方都使用它的网站,所以当我用xampp进行测试时,我最终创建了一个虚拟主机来加载网站。

有关详细信息,请参阅此文章:http://www.dreamincode.net/forums/topic/307265-change-serverdocument-root-path-for-xammp-light/

这是我的httpd-vhosts.conf文件:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "C:/xampp/htdocs/examplesite/nested/path/to/content"
    ServerName example.localhost
    ErrorLog "logs/example.localhost-error.log"
    CustomLog "logs/example.localhost-access.log" common
</VirtualHost>