1. 程式人生 > >PHP中./和/的使用區別,相對路徑巢狀包含問題,專案中使用絕對路徑

PHP中./和/的使用區別,相對路徑巢狀包含問題,專案中使用絕對路徑

  • ./:表示同級目錄(當前檔案所屬資料夾),每個資料夾下都有“.”檔案,代表當前目錄
  • ../:表示上級目錄(當前檔案所屬資料夾的上級資料夾),每個資料夾下都有“..”檔案,表示上級目錄
  • 什麼都沒有:就是表示同級目錄。區別./在於./會自動匹配任意目錄下的.資料夾,被其他檔案包含之後會找那個檔案的同級目錄,而什麼都沒有則只會從自身檔案所在目錄開始(比./安全),當被其他檔案包含之後也只是找原始路徑同級目錄

1、路徑定義如下根目錄下include.php和father。father下father.php和son,son目錄下son.php

father.php中引入son.php採用的son/son.php來引用,表示同級目錄,結果如下,顯示正確。 

此時訪問的include.php中,包含了father.php和son.php的程式碼,也就是

但是此時程式碼中include_once  "son/son.php",所引用的son.php不在include.php同級目錄,說明採用這種訪問的是father.php自身檔案同級目錄,所以才能訪問到,而不是include.php同級目錄(因為現在所有程式碼都加在到include.php檔案裡了)。

於是,請看另外一種情況:

這裡直接訪問father.php,是沒有問題的。

但是訪問include.php就會報錯:

找不到那個son.php路徑,問題就在於father.php中使用的./son/son.php去包含。而include.php包含了father.php

則include.php中程式碼如下:

這裡所有程式碼都加在到了include.php,所以./son/son.php會在當前include.php檔案同級目錄下找son.php,所以找不到。而什麼都不寫即son/son.php會在father.php自身檔案同級目錄下找son/son.php,才能找到。

 

所以一般專案推薦用絕對路徑訪問

雖然會損耗一些效能,但是對於專案而言這樣更安全可靠。_DIR_就只當前目錄所在路徑,前面的路徑變了沒關係,只要son.php還在son裡面,father.php還在father目錄裡面,include.php還在jeffery根目錄裡面,即整個專案檔案路徑不被破壞,扔到其他伺服器照樣執行。