关于PHP include文件时的文件查找顺序
常常被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文件时的文件查找顺序的更多相关文章
- 此文件时入口文件index.php
此文件时入口文件index.php <?php //定义一下ThinkPHP框架存放的路径 define('THINK_PATH','./ThinkPHP/'); //定义当前的项目的名称,此处 ...
- How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数)
原文:How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数) IS里调用外部文件的时候,一般都是用LaunchAppAndWait函数,比 ...
- U盘删除文件时提示“文件或目录损坏且无法读取”的解决方法
U盘删除文件时提示“文件或目录损坏且无法读取”的解决方法 出现原因:在写入或读取文件时,进行复制操作,此时复制到的文件是不完整的!或者移动硬盘/U盘中途被拔出,导致文件损坏 异常现象:被删文件(夹)属 ...
- Spring Boot 在接收上传文件时,文件过大异常处理问题
Spring Boot 在接收上传文件时,文件过大时,或者请求过大,spring内部处理都会抛出异常,并且捕获不到. 虽然可以通过调节配置,增大 请求的限制值. 但是还是不太方便. 之所以捕获不到异常 ...
- 百度编辑器ueditor批量上传图片或者批量上传文件时,文件名称和内容不符合,错位问题
百度编辑器ueditor批量上传附件时,上传后的文件和实际文件名称错误,比如实际是文件名“dongcoder.xls”,上传后可能就成了“懂客.xls”.原因就是,上传文件时是异步上传,同时进行,导致 ...
- 下载文件时-修改文件名字 Redis在Windows中安装方法 SVN安装和使用(简单版) WinForm-SQL查询避免UI卡死 Asp.Net MVC Https设置
下载文件时-修改文件名字 1后台代码 /// <summary> /// 文件下载2 /// </summary> /// <param name="Fil ...
- C# 创建文件时,文件夹不存在,如何自动创建文件夹
c# 创建文件时怎么创建文件夹?strhtml=......StreamWriter sw=new StreamWriter("D:/test/1.aspx",false);sw. ...
- Python中通过open()操作文件时的文件中文名乱码问题
最近在用Python进行文件操作的时候,遇到创建中文文件名的乱码问题. Python默认是不支持中文的,一般我们在程序的开头加上#-*-coding:utf-8-*-来解决这个问题,但是在我用open ...
- PHP上传文件时,文件过大$_FILES为空
在php中判断上传文件的大小,但是文件一但过大,print_r($_FILES);的值就变为null了,有时候大家会遇到这么一个问题,上传小文件时,PHP能正常获取到,但是文件一超过8M就变为空了,我 ...
随机推荐
- js和 php 介绍
转 1. 在公司项目的改造当中,经常会遇到js与php的函数互调的情况,而实际上JS与php的设计者是不提倡这两种语言直接进行调用的,一个是客户端语言,一个服务端语言,两者之间的交互往往靠的是ajax ...
- Codeforces Round #138 (Div. 1)
A 记得以前做过 当时好像没做对 就是找个子串 满足括号的匹配 []最多的 开两个栈模拟 标记下就行 #include <iostream> #include<cstring> ...
- 解决asp.net 以及MVC中上传文件大小限制的问题
﹤system.web﹥ ﹤httpruntime requestlengthdiskthreshold="256" maxrequestlength="2097151& ...
- [BZOJ1088][SCOI2005]扫雷Mine DP
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1088 记录下每一个格子对应左边格子放的雷的情况,然后dp转移就好了. #include&l ...
- Android学习笔记-事件处理之Handler消息传递机制
内容摘要:Android Handler消息传递机制的学习总结.问题记录 Handler消息传递机制的目的: 1.实现线程间通信(如:Android平台只允许主线程(UI线程)修改Activity里的 ...
- 架构师细说 NGINX 的配置及优化
最近感觉很多东西在运用到一定的程度之后,会发现原来是自己了解到的不够.一方面限于实际运用到的不多,一方面可能是因为一开始没有进行全面认识.遂这里搜集整理了一番NGINX. 一.nginx启动和关闭 c ...
- 阿里云ecs绑定域名
在阿里云服务器ECS一切配置ok后,通过域名一直访问不成功,结果发现还需要在后台进行安全组的规则设定:
- jQuery核心语法
.each只是处理jQuery对象的方法,jQuery还提供了一个通用的jQuery.each方法,用来处理对象和数组的遍历 jQuery/($).each(array, callback )jQue ...
- MAC加域重复跳出---"talagent"想使用“本地项目” 的钥匙串
很简单的解决办法,就是把以前的钥匙串给删掉就好 (重要提示:这个方法,以前所有程序自动记录密码都会丢掉,safari的自动填充,QQ自动登录,imessages 的等等) 1.打开Finder -&g ...
- 如何选安卓android|linux系统开发板,简化学习难度,缩短开发进程
平台一:iTOP-4412精英版 系统支持:Android 4.0.3系统 / Android 4.4系统 / Linux + Qt系统 / Ubuntu12.04系统 开发板特点:Cortex-A ...