获取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;