获取PHP项目的根目录path

我在我的PHP项目中有这个文件夹结构。 (这在eclips中显示)

-MySystem +Code +Data_Access -Public_HTML +css +js +Templates -resources 

当我尝试这个代码

 echo $_SERVER['DOCUMENT_ROOT'] 

输出是

d:/工作区

如何获取系统( MySystem )的RootDirectory的path,而无需对文件夹名称进行硬编码?

对于PHP> = 5.3.0试试

PHP 魔术常量 。

 __DIR__ 

相对而言,你的path。

对于PHP <5.3.0试试

 dirname(__FILE__) 

当你这样说的时候

 $_SERVER['DOCUMENT_ROOT'] 

包含这个path:

 D:/workspace 

那么D:你在找什么,不是吗? 在这种情况下,你可以用斜杠来分解string,并返回第一个string:

 $pathInPieces = explode('/', $_SERVER['DOCUMENT_ROOT']); echo $pathInPieces[0]; 

这将输出服务器的根目录。

更新:当您使用常量DIRECTORY_SEPARATOR而不是硬编码的斜杠( '/' )时,此代码也在Windows下工作。

更新2: $_SERVER全局variables不总是可用的。 例如在命令行(cli)上。 所以你应该使用__DIR__而不是$_SERVER['DOCUMENT_ROOT']__DIR__返回php文件本身的path。

使用PHP函数:

getcwd()

获取当前的工作目录。

你可以试试:$ _SERVER ['PATH_TRANSLATED']

引用:

在服务器完成任何虚拟到实际的映射之后,文件系统(不是基于文档根目录的)到当前脚本的path。 注意:从PHP 4.3.2开始,与Apache 1中的情况相比,PATH_TRANSLATED不再隐式设置在Apache 2 SAPI的情况下,而Apache 1不会将其设置为与SCRIPT_FILENAME服务器variables相同的值。 这个改变是为了符合CGI规范,PATH_TRANSLATED应该只在PATH_INFO被定义时存在。 Apache 2用户可以使用httpd.conf中的AcceptPathInfo = On来定义PATH_INFO。

来源: php.net / manual

我想指出WordPress的处理方式:

 define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' ); 

由于Wordpress在networking上使用非常繁重,而且在本地也很好,所以我对这种方法非常信任。

 echo $pathInPieces = explode(DIRECTORY_SEPARATOR , __FILE__); echo $pathInPieces[0].DIRECTORY_SEPARATOR;