当定义在子目录中设置时,如何获取根路径


How to get rootpath when the defines are set in a subdirectory?

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

E: ' web ' '网站名称' index . php
E: ' web ' '网站名称' res ' defines.php
E: ' web ' '网站名称' res ' another.php
E: ' web ' '网站名称' ' class-example.php类

其中E:'web'为localhost, E:'web'sites'name为站点的根节点。

$file = ROOTPATH."'data'feature'file.txt";

方式定义= E:'web'sites'name'data'feature'file.txt的示例路径

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

那么,在res' definitions .php中,如何获得指向E:'web'sites'name'的根路径?当网站在服务器上时,同样的ROOTPATH应该指向http://www.example.com/

这是我得到的定义。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'];

技巧是使用: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版本,以防有人正在使用一个…