在其他web编程语言中相对路径都是以当前处理文件目录为基准,而在php中并非如此。php中相对路径是以当前工作目录为基准的,并非以当前处理文件目录为基准,这样在开发过程中带来了不少的麻烦。比如会遇到一下问题
aaa
a.php
bbb
b.php
b1.php
ccc
c.php
以上目录中c.php中require(../b1.php),在a.php中require(bbb/ccc/c.php),这样就会出错,因为a.php中会在../中找b1.php,会找不到b1.php文件而报错,解决以上引用问题的一般做法有两种:
一、在a.php中加上define('ROOT_PATH',dirname(__FILE__));
之后再加上
require ROOT_PATH/bbb/ccc/c.php
二、 在根目录下新建一个文件global.php,内容包含chdir(dirname(__FILE__));
在每个文件中都将这个global.php包含进来。
综上所述,如果a文件引用了非同目录的b文件,且这个a文件将被非同目录的c文件引用,那么就要在a文件中用dirname(__FILE__)来包含b文件,否则在执行c文件时,会报错找不到b文件。