2013-10-15 59 views
5

什麼PHP包括 「../」 與 「/../」

require("../classes/M8.php"); 

require("/../classes/H8.php"); 

之間的差異如何將包括路徑將有什麼不同?

+8

第二個例子不起作用,因爲「/」是文件系統的根,上面沒有任何東西。只要使用絕對路徑(使用__DIR__常量)並且你沒事的話,你就會完全知道將包含什麼。 –

+0

@Mirtes,「/」將起作用,因爲在失敗之前,PHP將在包含文件的幾個不同路徑中查找。感謝__DIR__,解決了我與包含的每個問題。 – user1463822

回答

4

A /在路徑的開始處將指向根目錄。這被稱爲絕對路徑。其他任何內容都與當前文件夾有關。這被稱爲相對路徑。

IBM描述的差異here

絕對路徑名錶示從/(根)目錄下的目錄或文件的完整名稱。無論您在文件系統中工作的位置如何,您都可以通過指定其絕對路徑名稱來查找目錄或文件。絕對路徑名以斜槓(/)開頭,該符號代表根目錄。路徑名/ A/D/9是9的絕對路徑名。第一個斜槓(/)表示/(根)目錄,它是搜索的起始位置。路徑名的其餘部分將搜索指向A,然後到D,最後到9.

與完整路徑名不同,相對路徑名稱指定基於當前工作目錄的目錄或文件。對於相對路徑名稱,可以使用符號點點(..)在文件系統層次結構中向上移動。點點(..)代表父目錄。由於相對路徑名稱指定從當前目錄開始的路徑,因此它們不以斜槓(/)開頭。相對路徑名稱用於指定當前目錄中文件的名稱或文件系統中當前目錄級別之上或之下的文件或目錄的路徑名稱。如果D是當前目錄,則訪問10的相對路徑名稱是F/10。但是,絕對路徑名始終爲/ A/D/F/10。另外,訪問3的相對路徑名是../../B/3。

想象一下你正在採用這種結構,例如,在MyScript.php進行工作:

Home 
    -- Foo 
    -- Example.php 
    -- Bar 
    -- Scripts 
     -- MyScript.php 

如果你想包括Example.phpFoo文件夾中,你既可以指定:

../../Foo/Example.php /* Relative path: ..Bar/..Home (Root)/Foo/Example.php */ 

或者:

/Foo/Example.php /* Absolute path: Home (Root)/Foo.Example.php */ 
14

/..是相對於服務器根目錄的路徑。
../是相對於當前腳本文件夾的路徑。

我看到一個請求獲取更多信息。

如果你在你的服務器上的文件夾中,說:

/usr/local/apache2/www/example.php

然後 在使用example.php參考可以作出一個絕對路徑,所以相對於服務器的根目錄:/usr/local/apache2/hidden/credentials.php

或者同一個文件可以使用相對於當前文件的路徑到達:../hidden/credentials。 PHP。請注意,每個../集都會將您的服務器文件夾結構中的一個目錄向上移動。

+0

很好,+1。 –