2012-04-13 175 views
1

我想知道是否有人可以幫助我。服務器真實路徑

我正在嘗試檢索我用於在我正在構建的圖像庫腳本中的xml文件的文件路徑。

我的文件夾結構如下:

website/development/UploadedFiles/'username'folder/'location' folder/file.xml

我已經把這個嘗試,讓我的路徑:

<?php 
chdir('var/www/'); 
echo realpath('./././file.xml'); 
?> 

但我收到以下錯誤:

Warning: chdir() [function.chdir]: No such file or directory (errno 2) in /homepages/2/d333603417/htdocs/development/real.php on line 2

我敢肯定,我在這裏犯了一個初學者的錯誤,但我希望至少有一次嘗試。我只是想知道是否有人可能會對此感到失望,並讓我知道我哪裏會出問題。

非常感謝

+2

與'./././'你基本上還在同一個目錄下。 – hjpotter92 2012-04-13 11:14:34

回答

0

如果你想獲得一個文件相對於你的php文件的絕對路徑,通常更容易做一些像dirname(__FILE__).'/path/to/file'這樣的事情,因爲它比使用相對路徑使用chdir更可預測。您也可以將其回顯以進行調試。

所以你的情況,它看起來像你可能希望有這樣的事情:

$file = dirname(__FILE__)."/UploadedFiles/$username/$location/file.xml"; 

如果您需要向上遍歷目錄,你有多個dirnames中做到這一點:

$file = dirname(dirname(__FILE__))."/UploadedFiles/$username/$location/file.xml"; 
+0

嗨@mensi,非常感謝您花時間幫助我。原諒我問一個非常愚蠢的問題,但你能告訴我,請將thsi文件添加到根目錄並從那裏運行它?親切的問候 – IRHM 2012-04-13 12:18:18

+0

@IRHM只要相對路徑保持不變並且正確,文件的位置並不重要。__FILE__指向寫入的文件的絕對路徑,因此請相應地調整dirname的數量。這也適用於包含,因爲__FILE__引用它寫入的實際文件,而不是web服務器最初加載的腳本。 – mensi 2012-04-13 12:50:37

+0

太好了,非常感謝。我有這個工作。 – IRHM 2012-04-13 13:20:41

5

,那是因爲有兩種類型的UNIX路徑的:

絕對路徑:/var/www/(總是以/開始)

相對路徑:var/www/(相對於您所在的地方。開頭沒有/

如果你chdir到/var/www/你可以到/var/www/

如果CHDIR到var/www/你CHDIR到<directory_where_you_are>/var/www/

而且你./././有一個錯誤。

./ - 表示您的當前目錄。使用./././會將您留在當前目錄中。

如果您想通過目錄樹向上移動,請使用../(表示父目錄)。

+0

嗨,非常感謝回覆我的帖子。這非常有用,尤其對於初學者來說。親切的問候 – IRHM 2012-04-13 12:47:51

+0

歡迎您! – 2012-04-16 05:02:34