常常被include文件的路径搞晕。 看来是要理一理的时候了。

PHP官方文档关于include搜索路径的解释是:先查找工作目录下相对于include_path设置所对应的路径,然后再搜索执行文件所在目录相对于include_path设置所对应的路径,如果两个总都不存在,说明文件不存在。对于绝对路径和以./..开头的路径,搜索的路径仅为工作目录。

上面这段话理解起来真是有点难。我们拆分来理解吧。

首先要知道什么是工作目录:简单的理解就是入口文件所在的目录(对于命令行模式的PHP,就是执行php命令所在的目录了,请参阅PHP CLI与CGI 和 PHP日志)。比如说你网站根目录是/www/,在/www/下有一个main.php文件,你的域名是www.domain.com,你访问http://www.domain.com/main.php,执行main.php时,工作目录就是/www/

接下来解释一下上面所说的执行文件所在的目录:比如有两个文件 /www/main.php, /www/include/b.php 其中,main.php里面有一句 include 'include/b.php'。在执行到b.php里面的内容时,执行文件所在目录就是指/www/include/

以一个具体例子做为解释:

根目录为/www/,include_path设置为是.(当前目录),文件结构:

/www/
/www/main.php
/www/include/a.php
/www/include/b.php

main.php代码如下:

<?php
include 'include/a.php';

a.php代码如下

<?php
echo 'a.php<br />';
include 'b.php';
include 'include/b.php';

b.php代码如下:

<?php
echo 'b.php<br />';

运行结果如:

a.php
b.php
b.php

解读a.php里的两个include是怎么搜索文件的。

include 'b.php': 先搜索/www/b.php,搜索不到时搜索/www/include/b.php

inlucde 'include/b.php':先搜索/www/include/b.php,搜索不到时搜索/www/include/include/b.php

按上面的搜索顺序,都是可以搜索到b.php文件的,所以没有错误。

注意上面说到的对于./..开头的路径只是搜索工作目录,可以通过修改a.php文件测试一下:

<?php
//所了.前缀
echo 'a.php<br />';
include './b.php'; //搜索/www/b.php,这个文件是不存在的。
include './a/b.php';

结果:

aaarticlea/png;base64,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" alt="" />

关于PHP include文件时的文件查找顺序的更多相关文章

  1. 此文件时入口文件index.php

    此文件时入口文件index.php <?php //定义一下ThinkPHP框架存放的路径 define('THINK_PATH','./ThinkPHP/'); //定义当前的项目的名称,此处 ...

  2. How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数)

    原文:How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数) IS里调用外部文件的时候,一般都是用LaunchAppAndWait函数,比 ...

  3. U盘删除文件时提示“文件或目录损坏且无法读取”的解决方法

    U盘删除文件时提示“文件或目录损坏且无法读取”的解决方法 出现原因:在写入或读取文件时,进行复制操作,此时复制到的文件是不完整的!或者移动硬盘/U盘中途被拔出,导致文件损坏 异常现象:被删文件(夹)属 ...

  4. Spring Boot 在接收上传文件时,文件过大异常处理问题

    Spring Boot 在接收上传文件时,文件过大时,或者请求过大,spring内部处理都会抛出异常,并且捕获不到. 虽然可以通过调节配置,增大 请求的限制值. 但是还是不太方便. 之所以捕获不到异常 ...

  5. 百度编辑器ueditor批量上传图片或者批量上传文件时,文件名称和内容不符合,错位问题

    百度编辑器ueditor批量上传附件时,上传后的文件和实际文件名称错误,比如实际是文件名“dongcoder.xls”,上传后可能就成了“懂客.xls”.原因就是,上传文件时是异步上传,同时进行,导致 ...

  6. 下载文件时-修改文件名字 Redis在Windows中安装方法 SVN安装和使用(简单版) WinForm-SQL查询避免UI卡死 Asp.Net MVC Https设置

    下载文件时-修改文件名字   1后台代码 /// <summary> /// 文件下载2 /// </summary> /// <param name="Fil ...

  7. C# 创建文件时,文件夹不存在,如何自动创建文件夹

    c# 创建文件时怎么创建文件夹?strhtml=......StreamWriter sw=new StreamWriter("D:/test/1.aspx",false);sw. ...

  8. Python中通过open()操作文件时的文件中文名乱码问题

    最近在用Python进行文件操作的时候,遇到创建中文文件名的乱码问题. Python默认是不支持中文的,一般我们在程序的开头加上#-*-coding:utf-8-*-来解决这个问题,但是在我用open ...

  9. PHP上传文件时,文件过大$_FILES为空

    在php中判断上传文件的大小,但是文件一但过大,print_r($_FILES);的值就变为null了,有时候大家会遇到这么一个问题,上传小文件时,PHP能正常获取到,但是文件一超过8M就变为空了,我 ...

随机推荐

  1. linux安装glassfish并布署

    1 https://glassfish.java.net/download.html 2 准备工作:需要jdk7以上版本 Java EE 7 requires JDK 7 (or above) 下载g ...

  2. [转]C#Linq中的Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods,skip,take,takewhile,skipwhile,编译查询等

    本文转自:http://www.cnblogs.com/suizhikuo/p/3791799.html 我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Inte ...

  3. webform 基础一

    WebForm是微软开发的一款产品,它将用户的请求和响应都封装为控件.让开发者认为自己是在操作一个windows界面.极大地提高了开发效率.区别于dreamweaver,可以用代码写,也可以把控件像w ...

  4. 《effective java》中文第2版 note

    ,第15条[66]: 为不可变类提供静态工厂, eg : Integer/BigInteger 使用了静态工厂缓存了一些常用的实例, 通常 Integer -128 ~ +127. BigIntege ...

  5. 掌握Spark机器学习库-08.2-朴素贝叶斯算法

    数据集 iris.data 数据集概览 代码 import org.apache.spark.SparkConf import org.apache.spark.ml.classification.{ ...

  6. Objective - c Chapter 1 -2 Hello world

    Objective - c   Chapter 1  Hello world 1.1 1.2.On the Welcome screen, click "Create a new Xcode ...

  7. CAS4.0 server 环境的搭建

    1.上cas的官网下载cas server 官网地址:https://github.com/Jasig/cas/releases,下载好后 解压下载的 cas-server-4.0.0-release ...

  8. 虚拟机centOs Linux与Windows之间的文件传输

    一.配置环境 虚拟机Linux:Fedora 9 文件传输工具:SSHSecureShellClient-3.2.9 二.实现步骤 1. 在Windows中安装文件传输工具SSHSecureShell ...

  9. xamarin.forms 绑定页面里指定元素的某个属性值

    {Binding Source={x:Reference elementName}, Path=BindingContext.propertyname, Mode=OneWay} elementNam ...

  10. 用 vue cli 脚手架搭建单页面 Vue 应用(进阶2)

    1.配置 Node 环境. 自行百度吧. 安装好了之后,打开 cmd .运行 node -v .显示版本号,就是安装成功了. 注:不要安装8.0.0以上的版本,和 vue-cli 不兼容. 我使用的 ...