微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐