php.ini中的include_path設置如下:include_path="D:\php_5.3.5\pear;F:\PHP\Lib;" 注意 , 沒有 . include_path中的.代表當前工作目錄
include第一次找到某文件后,會緩存結果。下一次include相同的路徑時,只取緩存結果而不會多重查找,這就導致了我們移除某文件后可能短暫的時間內include會報錯(因為include機制發現緩存結果的路徑不存在,不會往下一重查找而是報錯)。所以測試的時候需要include前面加clearstatcache(true);或者對文件進行改名、刪除等操作以后馬上重啟apache,以強制每次include都多重查找。
ps:include的緩存機制具體說明:include會按順序進行多重查找,但如果發現某一重有緩存,就會立刻跳出查找,不管那一重的緩存結果路徑是否存在。 也就是說假如第一重的文件存在,我們卻將其刪除,則在include緩存有效期間會造成include錯誤。假如第一重的文件不存在,第二重的文件存在,我們建立了第一重文件,則會馬上生效,不受include緩存影響
1.include('2.php');
注意,'2.php'不是按相對路徑開始查找,其多重查找順序如下:
(1) 如果是絕對路徑,則直接查找絕對路徑是否存在
(2)首先從php.ini中設置的include_path目錄中查找文件(遍歷include_path中的每個目錄)
(3)然后從調用此語句的文件所屬目錄(__DIR__)查找文件
(4)最后從當前工作目錄(getcwd())中查找文件