当定义在子目录中时获得实际(完整)根路径的可靠方法?考虑:
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.php
和res'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版本,以防有人正在使用一个…