PHP中文件包含的路径问题
在程序中当前文件夹下文件路径可以表示为3种:1)绝对路径,2)相对路径,3)直接文件名
例如在/var/www下的a.php:1)/var/www/a.php 2)./a.php 3)a.php
在PHP中包含一个文件路径也可以有以上3中方法,但效率是依次递减的。原因可以通过strace来追踪。
首先写一个test.php:
1 <?php
2 include('a.php'); //为了看到文件包含顺序,这个a.php是不存在的
然后strace追踪test.php的执行
root@Cyrec-desktop:/var/www# strace -e file php test.php
可以看到如下:
lstat64("/var/www/./c.php", 0xbfe389f4) = -1 ENOENT (No such file or directory)
lstat64("/opt/php5/lib/php/c.php", 0xbfe389f4) = -1 ENOENT (No such file or directory)
lstat64("/var/www/c.php", 0xbfe389f4) = -1 ENOENT (No such file or directory)
可以看到包含文件的查找过程是 首先在当前目录中查找,没找到(-1)然后到PHP配置的include_path中查找,又没
找到,最后到执行脚本的目录查找,也没找到。
然后将test.php中的a.php路径改为./a.php然后再用strace查看:
lstat64("/var/www/./c.php", 0xbfd2c8d4) = -1 ENOENT (No such file or directory)
只有这一条查找记录,但系统还是要将/var/www/./c.php转换成/var/www/c.php这样的绝对路径。
如果include中使用绝对路径/var/www/a.php,结果如下:
lstat64("/var/www/c.php", 0xbf92a3d4) = -1 ENOENT (No such file or directory)
这是最快的方法,所以在PHP程序中可以在配置文件中设置当前文件夹路径常量,包含的时候组成绝对路径,提高
效率,又不影响程序的修改。
PHP中文件包含的路径问题的更多相关文章
- 实战经验丨CTF中文件包含的技巧总结
站在巨人的肩头才会看见更远的世界,这是一篇技术牛人对CTF比赛中文件包含的内容总结,主要是对一些包含点的原理和特征进行归纳分析,并结合实际的例子来讲解如何绕过,全面细致,通俗易懂,掌握这个新技能定会让 ...
- TP5中文件的写入路径有的会被自动重定向到首页
TP5中文件的写入路径有的会被自动重定向到public public function export() { $model=model('FanweUser'); $list=$model->w ...
- java中文件的相对路径以及jar中文件的读取
Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径. 一:绝对路径名:是完整的路径名,不需要任 ...
- CTF中文件包含的一些技巧
i春秋作家:lem0n 原文来自:浅谈内存取证 0x00 前言 网络攻击内存化和网络犯罪隐遁化,使部分关键数字证据只存在于物理内存或暂存于页面交换文件中,这使得传统的基于文件系统的计算机取证不能有效应 ...
- PHP中文件类型 文件属性 路径以及 文件相关的函数
一: 文件类型判断: 1.is_dir() 判断是不是目录 2.is_file() 判断是不是文件 3.is_executable() 判断是不是可执行文件 4.is_readable() 判断是 ...
- Java中文件上传路径与路径修改相关问题(tomcat8.0+eclipse)
1.普通文件上传的路径: 通过getRealPath获取相关路径 String photoFolder =request.getServletContext().getRealPath("u ...
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bccced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- php学习笔记6--php中的文件包含 include,require,include_once,require_once
php中的文件包含 include,require,include_once,require_once 文件包含:是指将一个文件的内容包含进另外一个文件,有利于代码的复用等.php中文件包含指令有4个 ...
- 2019-10-8:渗透测试,基础学习,php基础,会话,文件包含,笔记
php面向对象基础->调用符号构造函数construct,主要用来创建对象时初始化对象,为成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 析构函数destructor,与构造函数相 ...
随机推荐
- 使用cisco SDM管理路由器
实验拓扑: 实验目的:掌握如何通过SDM对路由器进行管理 实验需求:设置R1使其能够通过SDM进行管理 实验步骤: 步骤一:配置基本IP地址 步骤二:在R1上进行设置,使其能够通过SDM连接 R1(c ...
- vsftp访问异常
在LINUX下vsftp建立一个FTP服务器,但通过ftp的命令控制台使用FTP时,ls无法查看目录, 当然更无法上传下载文件了! 出错如下 : ftp> ls 227 Entering Pas ...
- HDU 1203 I NEED A OFFER! 01背包 概率运算预处理。
题目大意:中问题就不说了 ^—^~ 题目思路:从题目来看是很明显的01背包问题,被录取的概率记为v[],申请费用记为w[].但是我们可以预先做个处理,使问题解决起来更方便:v[]数组保留不被录取的概率 ...
- Rails (堆栈)<数据结构>
题意:<看图片> 解题思路:栈的简单应用: #include<iostream> #include<stack> #include<algorithm> ...
- Activity与Service之间交互并播放歌曲的实现代码
Activity与Service之间交互并播放歌曲,为了方便,我把要播放的歌曲定死了,大家可以灵活改进 MService: 复制代码代码如下: package com.tiantian.test;im ...
- html5中的postMessage解决跨域问题
解决跨域问题的方法有很多,如:图像ping(简单).jsonp(缺点是不能实现跨域post).CROS(CORS的本质让服务器通过新增响应头Access-Control-Allow-Origin,通过 ...
- USACO1.3.4 Combination Lock
题目链接:1.3.4 为了防止有重复的数字,我开了个三维数组来标记,爆内存,又用vector标记,爆内存... 不得不感慨这份代码. /* ID:wang9621 PROG:combo LANG:C+ ...
- adt download
http://my.oschina.net/roaminlove/blog/40384 http://dl.google.com/android/ADT-xx.x.x.zip 玩一下android的g ...
- Delphi的指针(转)
源:http://blog.csdn.net/henreash/article/details/7368088 Pointers are like jumps, leading wildly from ...
- background系列属性
1.background-color背景颜色属性 ①颜色表示方法 英语单词:red blue purple skyblue. rgb:r代表红色 g代表绿色 b代表蓝色 也 ...