2011-11-06 93 views
0

我做了很多閱讀,但我無法回答一個問題,我用PHP包含行爲。包含/需要函數行爲需要的解釋

在php.net上它表示它查看include_path變量中的目錄。之後,它在當前目錄中查找。如果我放置相對路徑(以點開始)或絕對路徑,它會忽略include_path。

到目前爲止這麼好。

我感到困惑時,我看到有類似的東西開始在互聯網上的例子:

include('LibName/SomeFile.php'); 

PHP的會抓住每一個路徑從包含路徑並追加「LIBNAME/SomeFile.php來查找文件?什麼是行爲?

回答

2

這正是你所說的。它檢查include_path中的每個目錄以查看'LibName/SomeFile.php'是否引用與這些路徑相關的文件。如果不是,它會嘗試當前目錄。

+0

那麼,爲什麼它似乎不工作? 我有網在目錄上託管的PEAR包: /家庭/ onlineki/PHP 那麼我這樣做: \t $ newIncludePath = get_include_path() 「:家/ onlineki/PHP的」。 \t set_include_path($ newIncludePath); 當我嘗試包含文件 require_once('PHPUnit2/Framework/TestCase.php'); 它無法找到它。什麼解決了我的問題是改變當前目錄。 –

+0

哦,上帝。格式是可怕的評論:( 而這是什麼愚蠢的規則,我不能編輯5分鐘後評論? –

+1

您有失蹤「/」前「家」。 –

1

PHP認爲在包含路徑中的每個條目分別尋找文件,包括時。它會檢查第一個路徑,如果找不到它,請檢查下一個路徑,直到找到包含的文件或返回警告或錯誤。您可以使用set_include_path()在運行時修改或設置包含路徑。

您可以在這裏找到更多的信息:http://www.php.net/manual/en/ini.core.php#ini.include-path

+0

是的,但這不會回答我的問題.php將從include_path採取每一個路徑,並附加'LibName/SomeFile.php尋找文件? –

+0

是的,它應該搜索,直到找到您的文件(而不是停止)或路徑列表結束。爲您的問題提供了正確的答案(只需在您的路徑中添加「/」)。 –