zoukankan      html  css  js  c++  java
  • php的include与require区别以及包含路径查找

    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, 同样不会递归查找。

  • 相关阅读:
    Windows Azure 基本操作手册
    如何通过Visual Studio发布Azure应用程序
    Windows Azure的故障检测和重试逻辑
    如何在Azure上动态配置IP地址
    vue2.0像子组件传递新数据(插槽)
    iview admin 动态加载左侧菜单栏?
    iViewadmin数据请求跨域处理
    angular4的多环境(测试环境与开发环境,生产环境)
    页面编译,及部署
    resolve守卫
  • 原文地址:https://www.cnblogs.com/MyOnlyBook/p/9338885.html
Copyright © 2011-2022 走看看