2013-02-25 52 views
0

我試圖插入我的項目中的一個小圖書館。這個庫有一些包含並需要跨類,所以我試圖爲所有工作設置一個包含路徑。PHP:爲什麼我的`set_include_path()`指向一個目錄時不工作?

當試圖從兄弟分支設置包含路徑時,我遇到了一個呃逆。

對於參考點,require('/../my/test.php')工作正常。

所以確實

set_include_path('/../'); 
require_once('my/test.php'); 

但是,一旦我嘗試

set_include_path('/../my/'); 
require_once('test.php'); 

我得到:

警告:require_once(one.php):未能打開流:沒有這樣的文件或目錄...

我錯過了什麼?

+1

不要使用這樣的相對路徑,它很容易亂了一切。使用'dirname(__ FILE __)'參考CURRENT FILE,並在每個文件中建立相對路徑。只是我的偏好。例如:'require_once(dirname(__ FILE __)。'/ ../my/test.php');' – Eggplant 2013-02-25 17:04:19

回答

5

/開始你的路徑就是查看根目錄,所以/../在技術上就是一個目錄以上的根目錄。

要將包含路徑設置爲當前位置的父目錄,您只需要../。爲了使代碼更具可移植性,我建議將它與dirname(__FILE__)結合起來以獲得當前目錄的絕對路徑。

IE:

set_include_path(dirname(__FILE__) . '/../my/'); 

注意前面/在例如需要爲dirname()不返回尾部斜槓

+0

謝謝,我會盡快將其標記爲答案。 – mOrloff 2013-02-25 17:10:56

+0

在我看來,使用'dirname(__ FILE __)'將它傳遞給'set_include_path()'是一個完全相反的矛盾。他所要求的是一種不被相關路徑困擾的不同文件(文件A包括文件B,其中包括文件C,等等)的方式。看到我上面的評論。 – Eggplant 2013-02-25 17:11:52

+1

我知道,我當然不會在項目中提倡'set_include_path()'濫用。 OP從直接路徑要求更好。然而,問題是「爲什麼不是我的'set_include_path()'工作」 – Dunhamzzz 2013-02-25 17:14:03

相關問題