从PHP中的文档根减去路径

时间:2012-10-18 19:40:30

标签: php

我当前的文档根目录是这样的(通过$ _SERVER ['DOCUMENT_ROOT']):

/var/www/html/clients/app/folder

我需要生成一个文件夹:

/var/www/html/clients/app

我将如何做到这一点?

我过去曾问过这个问题: Dynamically finding paths, is there a better way?

但是,我有这种情况不起作用:

  • 执行的脚本位于:root / f1 / f2 / f3 / f4 / f5 / file.php。
  • 此脚本包含另一个位于此处的脚本:root / f6 / file2.php

在file2.php中,我需要以下代码才能工作:

$base_path = dirname(realpath("../../../../do_not_remove.txt"));

理论上,基于它的位置,应该是这样的:

$base_path = dirname(realpath("../do_not_remove.txt"));

在实践中,可以传输这些数据的全局可用。但是,在这个继承的项目中,我并没有在需要它的地方重复使用它。

更新#1

根据答案,这似乎很有效:realpath($_SERVER['DOCUMENT_ROOT']."/../../");

3 个答案:

答案 0 :(得分:4)

你可以 - $_SERVER['DOCUMENT_ROOT'] ."/../" - 即使它看起来不太漂亮

或者可能是一个更有道理的方式 - dirname( $_SERVER['DOCUMENT_ROOT'] ) - 认为这应该有用

答案 1 :(得分:3)

$path = $_SERVER['DOCUMENT_ROOT']."/../";

答案 2 :(得分:2)

使用explode(),array_pop()和implode():

<?php

//$path = $_SERVER['DOCUMENT_ROOT'];
$path = "/var/www/html/clients/app/folder";
$tmp = explode("/", $path);
array_pop($tmp);
$path_up = implode('/', $tmp);
echo $path_up; //output: /var/www/html/clients/app

?>