2011-03-15 135 views
2

我繼承了一些代碼:文件路徑需要

include('../cfg/db_setup.php'); 
require('./fpdf/fpdf.php'); 

我知道../cfg手段在當前目錄開始,然後進入上一層,下到CFG目錄。 ./fpdf是什麼意思?我從來沒有見過在文件路徑中使用單個斜槓,並且似乎無法在我們的服務器上的任何位置找到fpdf目錄,但代碼正在工作,顯然它在某處。

+0

當前目錄。順便說一句,這不是一個PHP包含的好習慣。您應該使用include(dirname(__ FILE __)。「../ cfg/db_setup.php」)來提供絕對路徑,而不是與當前目錄相關的路徑(可能會通過多種方式改變) – AbiusX 2011-03-15 21:30:39

+0

我意識到這一點,謝謝。就像我說的,這是我繼承的代碼。在開始處理絕對路徑之前,我需要找到所有參考文件。 – EmmyS 2011-03-15 21:46:30

回答

2

.被定義爲當前文件夾。

因此,如果PHP腳本位於/path/to/script/,那麼第二個語句將尋找/path/to/script/fpdf/fpdf.php

+0

謝謝。我不習慣處理相對路徑。 – EmmyS 2011-03-15 21:50:55

0

./ - 這意味着在當前路徑

2

./是當前目錄。 ./fpdf/應該與包含文件位於相同的路徑上,或者位於關閉php include_path的某處。

13

剛一說明。

相對路徑不相對於當前的include_path。

相對路徑,如。或../是相對於當前工作的目錄。如果在CGI或命令行上運行腳本,或者另一個目錄中的另一個腳本包含腳本,則工作目錄不同。

因此理論上是不可能的,以確保其中這些路徑指向不知道的上下文:P

可以肯定,如果PHP < 5.3:

include(dirname(__FILE__) . '/../cfg/db_setup.php'); 
require(dirname(__FILE__) . '/fpdf/fpdf.php'); 

如果PHP> = 5.3 :

include(__DIR__ . '/../cfg/db_setup.php'); 
require(__DIR__ . '/fpdf/fpdf.php');