1.php默認的包含路徑為 .;C:\php\pear 即為當前目錄和C:\php\pear目錄
2.如果設置ini_set("include_path", ""); 則改變為默認們目錄(即為上面的)
運行時的包含順序:
1.如果為絕對路徑 則直接包含, 並結束(找不到直接退出).
2.如果是是相對路徑((形如./file, ../dir/file) 則跳過include_path的作用邏輯, 直接解析相對路徑(找不到直接退出)
注意:在使用相對路徑的包含文件的情況下,如果一個文件被另一個文件所包含,則這個文件的”相對“則指的是包含他的那個文件
3.都不是以上兩種情況
會根據include_path,和當前執行文件的path組成一個待選的目錄列表 (即先include path 再當前文件所在的目錄,注意:文件的真實目錄)
然后, 依次從待選列表頭部開始, 根據PATH_SEPARATOR(windows下是”;”,linux下是":")取出待選列表中的一個路徑, 然后把要包含的文件名附加在這個路徑后面, 進行嘗試. 如果成功包含, 則返回(不在向下尋找), 否則繼續下一個待選路徑.
小結:
1. 因為使用include_path和相對路徑的情況下, 性能會和尋找的次數有關, 最壞的情況下, 如果你有10個include_path, 那么最多可能會重試11次才能找到要包含的文件, 所以, 在能使用絕對路徑的情況下最好使用絕對路徑.
2. 因為目錄相對路徑的basedir, 永遠都是當前工作路徑, 如果要使用, 需要和實際部署路徑相關, 所以實際使用的很少(當然, 也有借助chdir來完成的模塊).
3. 在模塊化的系統設計中, 一般應該在模塊內, 通過獲取模塊的部署路徑(dirname(__FILE__), php5.3以后更是提供了__DIR__常量)從而使用絕對路徑.
原文地址:http://www.laruence.com/2010/05/04/1450.html