欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于PHP的include

程序员文章站 2024-02-12 12:44:19
...
测试环境: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())中查找文件

相关标签: 关于PHP的include