谈谈PHP中相对路径的问题与绝对路径的使用


Posted in Javascript onAugust 16, 2016

问题描述

首先我们先来看一下我们这个例子的目录结构以及这三个文件的内容

a.php

<?php
include './c/d.php'

b.php

<?php
define('__B', 'this is a test');

c/d.php

<?php
include '../b.php';
var_dump(__B);

在c目录下面的d.php文件引用了它的上级目录下的 b.php 文件 单独运行 c/d.php 的时候不会出问题

谈谈PHP中相对路径的问题与绝对路径的使用

但是,如果在和b同级目录下的a.php引用c/d.php的话就会出问题了

谈谈PHP中相对路径的问题与绝对路径的使用

它报错说的是文件不存在

思考

大概意思就是 a.php 把 c/d.php 引入到 a.php 中后, include '../b.php' 这个路径就是相对于 a.php 来说的了,然后对于 a.php 来说的这个相对路径它是不存在的,所以就出现了这个问题

如果一个文件可能在多个地方被引用的时候使用相对路径就相当容易出问题,然后我们使用绝对路径能够轻松解决这个问题。

使用绝对路径解决问题

如果我们把文件改成如下内容

a.php

<?php
include __DIR__.'/../b.php';
var_dump(__B);

b.php

<?php
define('__B', 'this is a test');

c/d.php

<?php
include __DIR__.'/../b.php';
var_dump(__B);

这样就改成了对文件的绝对路径进行引用了, __DIR__ 是php5.3开始中就有的预定义的魔术常量,表示这个文件所在的目录,然后我们利用这个来可以写出绝对路径,在运行a.php和c/d.php的时候都能够正常执行了,如果在php5.3之前都是使用 dirname(__FILE__) 来替代 __DIR___

总结

以上就是关于php中相对路径的问题以及绝对路径的使用的全部内容,希望对大家使用PHP能有所帮助,避免再进入php中相对路径的坑。

Javascript 相关文章推荐
繁简字转换功能
Jul 19 Javascript
建议大家看下JavaScript重要知识更新
Jul 08 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
Apr 12 Javascript
使用js简单实现了tree树菜单
Nov 20 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
Oct 29 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
JavaScript reduce和reduceRight详解
Oct 24 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
Oct 12 Javascript
详解swiper在vue中的应用(以3.0为例)
Sep 20 Javascript
django中使用vue.js的要点总结
Jul 07 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
Apr 08 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 Javascript
jQuery多文件异步上传带进度条实例代码
Aug 16 #Javascript
AngularJS指令详解及示例代码
Aug 16 #Javascript
AngularJS教程之简单应用程序示例
Aug 16 #Javascript
AngularJS教程之MVC体系结构详解
Aug 16 #Javascript
超实用的javascript时间处理总结
Aug 16 #Javascript
AngularJS教程之环境设置
Aug 16 #Javascript
JavaScript中获取时间的函数集
Aug 16 #Javascript
You might like
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
javascript中Object使用详解
2015/01/26 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
Python实现计算最小编辑距离
2016/03/17 Python
pandas 选择某几列的方法
2018/07/03 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python中的列表与元组的使用
2019/08/08 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
大学生作弊检讨书
2014/09/11 职场文书
流动人口婚育证明
2014/10/19 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
公司庆典欢迎词
2015/01/26 职场文书