总结:

1. include或require包含其他文件 使用./或者 ../,这里的当前路径和上一层路径,取决于运行脚本的路径,会存在如下问题。

在写PHP程序时,经常要用到include或require包含其他文件,但是各文件里包含的文件多了之后,就会产生路径问题。

如下目录:

<web>(网站根目录) 
 ├<A>文件夹 
 │ │ 
 │ └1.php 
 ├<B>文件夹 
 │ │ 
 │ └2.php 
 └index.php

现在根目录下的index.php要包含A文件夹内的1.php文件,则用include "./A/1.php"即可

而1文件夹内的1.php又包含了B文件夹内的2.php,则1.php内写上include "../B/2.PHP"即可

可是要知道,当index.php包含了1.php之后,编译是在index.php里进行的,也就是index.php所包含文件里的include都是相对于index.php的,那么1.php被包含进index.php里了,那么就要相对于index.php寻找2.php了。而上面说了,1.php里写的是include "../B/2.php",现在编译文件已经相对于网站根目录了(即相对于index.php),"../"则意味着还要再返回上一级目录寻找,那么怎么会找得到。

在网上也寻找过一些方法,最好的办法还是都采用绝对路径方法较妥。可以定义一个单入口文件,将要包含的文件包含进来,定义一个常量define("__ROOT__",dirname(__FILE__));,那么在写后面的文件过程中,只需要采用绝对方式,加上__ROOT__就行了。

2. include或require包含其他文件 不使用./或者 ../ 直接包含文件名,取决于包含文件所在路径,如:

<web>(网站根目录) 
 ├<A>文件夹 
 │ │ 
 │ └1.php

│ │ 
 │ └a.php

├<B>文件夹 
 │ │ 
 │ └2.php 
 └index.php

当index.php包含了1.php之后,编译是在index.php里进行的,也就是index.php所包含文件里的include都是相对于index.php的,那么1.php被包含进index.php里了,如果1.php包含a.php使用 require"a.php" ,不存在问题。使用 require"./a.php" ,存在问题,此时的./表示的是index.php所在的路径。

3.命名空间的函数加载  原理也是包含文件,不过只有使用到的时候被加载,使用spl_autoload_register可以注册命名空间的加载机制。

4.文件的路径和include和require 有区别,文件的./filename.ext或../filename.ext或filename.ext都是以所运行脚本所在目录为参考的(即getcwd()得到的目录),所以文件操作建议用相对路径 __FILE__。

$filename = 'file1.txt';
$fp = @fopen($filename,'w');

fwrite($fp,"\r\n");

fclose($fp);

$filename = '../file2.txt';

PHP 文件包含总结 include require 命名空间 autoload spl_autoload_register 读取文件路径的更多相关文章

  1. c++ 头文件包含问题-include&class

    http://blog.csdn.net/jiajia4336/article/details/8996254 前向声明概念(forward declaration) 在程序中引入了类类型的B.在声明 ...

  2. PHP中多个文件包含的问题 (二)

    首先php中有常用的两种方法将文件包含:include和require,而include_once和require_once无非就是升级版而已,这里就不阐述他们的区别,我只提一下我遇到的问题: 先看一 ...

  3. 文件包含漏洞File Inclusion

    文件包含漏洞 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞.非授权文件包含漏洞等. 文件包含分类 LFI:本地文件包含(Local File Inclusion) RFI:远程文件包含 ...

  4. 文件包含漏洞(file inclusion)

    文件包含漏洞原理:(php) 是指当服务器开启allow_url_include选项的时候,通过php某些特性函数.如include().include_once().require().requir ...

  5. PHP文件包含 整理

    文件包含 目录 文件包含 1. 概述 1.1 常见的引发漏洞的函数: 1.2 利用条件 1.3 分类和利用思路 2. 利用方法 2.1 配合文件解析漏洞来包含 2.2 读取系统敏感文件(路径遍历) 2 ...

  6. 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击

    风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...

  7. 文件包含 & LFI-labs靶场

    文件包含漏洞学习 冲冲冲,好好学习 2020.1.30 认真对待自己做出的每一个决定 知识与实践 Q:什么是文件包含? A:简单一句话,为了更好地使用代码的重用性,引入了文件包含函数,可以通过文件包含 ...

  8. 文件包含上传漏洞&目录遍历命令执行漏洞

    文件上传漏洞: 一句话木马 一句话木马主要由两部分组成:执行函数与 接收被执行代码的变量 执行函数: eval() assert() create_function() array_map() arr ...

  9. ✔PHP文件包含漏洞全面总结

    我的另一篇博客总结的不够全面,但依然有借鉴价值:https://www.cnblogs.com/Zeker62/p/15192610.html 目录 文件包含的定义 文件包含漏洞常见函数 文件包含漏洞 ...

随机推荐

  1. Java经典兔子问题

    题目:古典问题:3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析:首先我们要明白题目的意思指的是每个月的兔子总对数:假设将兔子分为小 ...

  2. [课程设计]Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案)

    Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统W ...

  3. 后端学 Angular 2 —— 组件间通信

    1. 父组件向子组件传递信息 使用@Input 子组件的属性用 @Input 进行修饰,在父组件的模板中绑定变量 例子: import { Component, OnInit, Input } fro ...

  4. C# 正则表达式小坑 -- not enough

    今天遇到了一个奇怪的报错: 相关的代码是这样的: Regex regex = new Regex("(?<=wwwroot\\).*?$"); 然后把这段正则复制到任何正则测 ...

  5. [ASM C/C++] C语言的main 函数

    C语言有两种可能的运行环境 1. 独立(freestanding) 在独立环境中,C程序执行不需要操作系统的支持,因此只具有最小的链接库能力. 2. 宿主(hosted) 在宿主的环境中,C程序会在操 ...

  6. SunRay4(新蕾4) 定时自动关机方案, Linux后台自动任务crontab实践

    目录: 需求和思路分析 具体实现步骤 理解Crontab Crontab具体参数详细说明 最近碰到一个想要实现定时自动关机的功能,关机的指令无非就是: shutdown -h time 调用openw ...

  7. 20161127-emmagee

    Android 自动化测试 Emmagee Emmagee 是一个性能测试小工具 用来监控指定被测应用在使用过程中占用机器的CPU, 内存,流量资源的性能小工具 阅读目录 Emmagee 介绍 Emm ...

  8. IBM X3850 Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘

    以前安装的是window2003 32位, 改装为2012 64位的时候.出现 Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows 只能安装到 GPT ...

  9. 第一、初识C语言

    1·C语言强大而灵活,如python,LISP,FORTRAN,Perl,Logo,BASIC,PASACAL的编译器和解释器都是C语言编写的. 2·C语言的指针错误往往难以察觉,但这恰好告诉我们,一 ...

  10. 解决android:background背景图片被拉伸问题

    ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸.src是图片内容(前 ...