關於PHP的include


測試環境:Windows 2003 + PHP5.3.5 +Apache 2.2.19.0

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())中查找文件


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM