获取PHP项目的根目录路径

160

我在PHP项目中有这样的文件夹结构。(如Eclipse所示)

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

当我尝试这段代码时

echo $_SERVER['DOCUMENT_ROOT']

输出结果为

D:/workspace

如何获取系统(MySystem)的根目录路径,而不是硬编码文件夹名称?

14个回答

0

这对我有用,

realpath("../")

你可以使用../参数来指向。它将指向你实际工作文件的上一步。


3
这将返回当前文件的上一级路径。 - Alexander Kucheryuk

0
我使用这段代码。它允许用户在第一行声明一个自定义文件夹作为$root。 然后使用__FILE__获取实际的根目录。 这个根目录使用DIRECTORY_SEPARATOR进行分割(以便在任何系统上都能工作)。 循环创建一个新数组,只包含在找到$root之前的部分。 $root然后被推到数组中。 新数组再次使用DIRECTORY_SEPARATOR作为粘合剂进行合并。 结果存储在一个名为REAL_ROOT的新全局变量中。
如果有帮助或者好用,请告诉我!
$root = 'folder_you_want_as_root';
$currentDirectory = __FILE__;
$parts = explode(DIRECTORY_SEPARATOR,__FILE__);
$newParts = [];
foreach($parts as $part){
    if($part==$root){
        break;
    }
    $newParts[] = $part;
}
$newParts[] = $root;
define('REAL_ROOT',implode(DIRECTORY_SEPARATOR,$newParts));

0

0
我来分享一下我是如何解决这个问题的。也许对你有帮助。
我在根目录下创建了一个新文件"my-config.php",并在其中添加了以下代码。
<?php define( 'ABSPATH', dirname( __FILE__ ) . '/' );

我使用composer(你可以谷歌一下)。我的composer(composer.json)是这样的(针对这个问题)。
{
"files": [
    "my-config.php"
  ]
}

在所有文件中调用autoloader.php。因为我的配置文件会自动调用,感谢autoloader。
<?php require  __DIR__ . "/vendor/autoload.php"; ?>

现在,由于define是一个常量,只定义一次且不能再次更改,所以ABSPATH将在我的首页加载时确定,并且我可以随时输入ABSPATH来使用根目录路径。
然后,我在任何地方都使用"ABSPATH"作为根路径。例如,我使用xampp,所以我的根路径是C://xampp/htdocs/。
这是它的工作原理。Composer会自动将我们编写的文件和类加载到composer.json中。这是它的预期用途。请向谷歌询问更多细节。
在这里,我们在首页加载了autoload.php和my-config.php文件。此时,由于我们的首页将位于根目录中,它将采用ABSPATH根目录路径。
当然,根目录将是首页的路径。如果您的首页位于另一个文件夹中,则它将采用该文件夹的路径。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接