首先,让我们看看本示例中的目录结构和这三个文件的内容。
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,则没有问题。 但是,如果与b位于同一目录下的a.php引用c/d.php,则会出现问题,并报告文件不存在。
思考:
可能是因为在a.php将c/d.php引入a.php之后,针对a.php存在路径include './b.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
define () __b )、) this is a test );
这样更改为引用文件的绝对路径。 __DIR__是php5.3开头的预定义魔术常数,表示此文件所在的目录。 而且,你可以利用这个写绝对路径。 同时运行a.php和c/d.php时可以正常运行。 在php5.3之前输入dirname (
总结:在php中,绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从驱动器号开始的路径; 相对路径基于引用,而找到所需文件的相对路径是目标目录的相对路径。
以上仅供参考!