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

问题描述

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

a.PHP

rush:PHP;"> PHP include './c/d.PHP'

b.PHP

rush:PHP;"> PHP define('__B','this is a test');

c/d.PHP

rush:PHP;"> PHP include '../b.PHP'; var_dump(__B);

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

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

它报错说的是文件不存在

思考

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

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

使用绝对路径解决问题

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

a.PHP

rush:PHP;"> PHP include __DIR__.'/../b.PHP'; var_dump(__B);

b.PHP

rush:PHP;"> PHP define('__B','this is a test');

c/d.PHP

rush: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中相对路径的坑。

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...