Home  >  Article  >  Backend Development  >  关于PHP的include

关于PHP的include

WBOY
WBOYOriginal
2016-06-23 14:30:58917browse

测试环境: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())中查找文件


 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:PHP函数集锦Next article:Java与PHP的区别