php的include与require区别以及包含路径查找

本文详细解析了PHP中include和require的区别,包括错误处理方式、文件查找路径等关键信息。阐述了不同路径类型(绝对、相对和其他)下,这两个函数如何定位并包含文件,以及include_path的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

include和require的区别:

  include在文件找不到的时候发出一条警告,代码继续运行。而require则会发出一个致命错误。

引用文件的查找路径:

  想把这个问题说清楚,首先需要提一下php对被引用文件路径的分类,一共有以下3类:

    <1> 绝对路径,这个没啥说的,linux下以 '/' 开头,windows下以盘符或者 ‘\’ 开头。

    <2> 相对路径,以 './' 或者 '../' 开头。

    <3> 其他路径,也叫未定义路径,以目录或者文件直接开头的。比如,include("fun.php"), include("common/fun.php")。

  另外,php还有个include_path的概念,到时候查找文件可能还会去找这里面的文件。可以在代码中通过get_include_path()查看,和set_include_path()设置。

  (1) 当include或者require的路径为绝对路径时,include_path被忽略,文件直接定位到。

  (2) 当include或者require的路径为相对路径时,这里就比较坑爹了。很多主流的语言,代码里的相对路径的参考目录是该文件的目录,但是在php中这个参考目录是工作目录。当php的脚本在命令行模式下时,这个参考目录就是CWD,直接pwd输出的目录。如果是在web服务器上执行php页面的话,比如是http://localhost/func.php,那么这个参考目录就是fun.php所在的目录。而且如果fun.php包含了common.php, 而common.php又包含了alarm.php,那么这个参考路径仍然是fun.php所在的路径。

  (3) 当include或者require的路径为其他路径时, 先会去include_path下查找(include_path一般为CWD和$PHP_HOME/lib/php), 如果没找到,那么它就会去include代码所在文件的那个目录下去找。假设main.php中是这样的代码, include("fun.php"),那么直接会在main.php所在的目录下查找,找不到就报错,并不会递归去找其下的子目录。 如果是 include("common/fun.php"), 那么就会现在main.php所在目录下找到common目录,然后在common目录下查找fun.php, 同样不会递归查找。

转载于:https://www.cnblogs.com/MyOnlyBook/p/9338885.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值