如何在子目录中设置定义时获取rootpath?

时间:2013-03-21 18:13:26

标签: php directory filepath

当define在子目录中时获取实际(完整)根路径的可靠方法?考虑:

E:\网络\网站\用户名\的index.php
E:\ WEB \网站\用户名\资源\ defines.php
E:\ WEB \网站\用户名\资源\ another.php
E:\ web \ sites \ name \ classes \ class-example.php

其中E:\web\是localhost,E:\web\sites\name是网站的预期根目录。

E:\web\sites\name\data\feature\file.txt

的方式定义= $file = ROOTPATH."\data\feature\file.txt";的示例路径

我不使用相对路径的原因是因为我想在classes\class-example.phpres\another.php中传递路径而不使用同一目标的两个常量。

那么,在res \ defines.php中,将根路径指向E:\web\sites\name\的方法是什么?当网站在服务器上时,相同的ROOTPATH应指向http://www.example.com/

以下是我在define.php位于res\defines.php时获得的内容:

// Outputs: E:\web\sites\name\res
echo __DIR__;

// Outputs: E:\web\sites\name\res
echo realpath(__DIR__);

// Outputs: sites\name\res\another.php
echo $_SERVER['REQUEST_URI']

// Outputs: E:\web
echo $_SERVER['DOCUMENT_ROOT'];

// Outputs: sites\name\res\another.php
echo $_SERVER['SCRIPT_NAME'];

// Outputs: E:\web\sites\name\res\defines.php
echo __FILE__;

// Outputs: sites\name\res\another.php
echo $_SERVER['PHP_SELF'];

1 个答案:

答案 0 :(得分:0)

诀窍是使用:dirname(__DIR__)(PHP> = 5.3.0)。

// Outputs: E:\web\sites\name
echo dirname(__DIR__);

请注意,有些问题与此类似,但我检查的问题都没有dirname(__DIR__)的信息。他们都只提到dirname(__FILE__) 输出与dirname(__DIR__)相同的内容 - __FILE__版本输出E:\web\sites\name\res

希望此信息可以帮助其他人解决与子目录类似的问题:)

如果有人为旧的PHP版本提供解决方案,那将会很有趣,以防有人使用它...