1.php默认的包含路径为 .;C:\php\pear 即为当前目录和C:\php\pear目录

2.如果设置ini_set("include_path", ""); 则改变为默认们目录(即为上面的)

运行时的包含顺序:

php文件的路径PHP includepath详解 Python

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__常量)从而利用绝对路径.

set_include_path() && get_include_path()用法

<?phpfunction initialize(){set_include_path(get_include_path() . PATH_SEPARATOR . "core/");set_include_path(get_include_path() . PATH_SEPARATOR . "app/");set_include_path(get_include_path() . PATH_SEPARATOR . "admin/");set_include_path(get_include_path() . PATH_SEPARATOR . "lib/");set_include_path(get_include_path() . PATH_SEPARATOR . "include/");set_include_path(get_include_path() . PATH_SEPARATOR . "data/");set_include_path(get_include_path() . PATH_SEPARATOR . "cache/");}echo get_include_path();

这样它的路径就成了:

Window平台下

.;C:\php5\pear;core/;app/;admin/;lib/;include/;data/;cache/

Linux平台下

.:/usr/local/php/lib/php;core/;app/;admin/;lib/;include/;data/;cache/

get_include_path()是获取当前include_path的默认值

PATH_SEPARATOR 是个常量,是include的路径分界符合,在window上是;在unix和Linux上是:

<?phpset_include_path(dirname(__FILE__));$include_value = ini_get('include_path');echo $include_value;?>

结果是:D:\AppServ\www