当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.php
和res\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'];
答案 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版本提供解决方案,那将会很有趣,以防有人使用它...