2012-10-18 134 views
4

我現在的文檔根目錄是這樣(通過$ _ SERVER [ 'DOCUMENT_ROOT']):減去文檔根目錄路徑PHP

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

我需要生成一個文件夾最多:

/var/www/html/clients/app 

如何我會去做這個嗎?

我曾問過這個過去: Dynamically finding paths, is there a better way?

不過,我有這種情況下不工作:

  • 執行的腳本所在的位置:根/ F1/F2/F3/F4/F5/file.php。
  • 該腳本包括設在這裏的另一個腳本:根/ 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']."/../../");

回答

4

好,你可以有 - $_SERVER['DOCUMENT_ROOT'] ."/../" - 即使不看太漂亮

OR稍微更有效的方式可能是 - dirname($_SERVER['DOCUMENT_ROOT']) - 認爲這應該工作

+0

照片完成:)去給你投票的更多的話! – Ray

+0

公頃,我沒有剩下選票,否則我會投票給你,在正確的答案 – kalpaitch

+0

@Ray看我的更新,想什麼似乎工作?而且,我應該翻轉看看誰能得到答案? :) – TekiusFanatikus

3
$path = $_SERVER['DOCUMENT_ROOT']."/../"; 
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 

?>