php include 路径解决.
举个例子:(例子一)
根目录有1.php, 2.php, test/3.php,test/4.php 1.php和2.php同一文件夹里, 3.php,4.php在下级目录.
1.php内容:- <?php
- # 1.php
- inlcude "test/3.php";
- ?>
复制代码 3.php内容:- <?PHP
- # 3.php
- inlcude "4.php";
- include "../2.php";
- ?>
复制代码 1。执行1.php , 会报错. 提示 3.php 找不到"../2.php";
2。如果把"../2.php"改成"2.php",执行1。php就不会包错了.
问题出来了。
1: 对3.php来说,2.php的确是他的上级目录。但会报错,改成include "2.php",运行正常. 结论是,相对地址就以运行的脚本(1.php)为准。相当与把3.php的代码先写到1.php然后再执行。
2:上面说以1.php为准,4.php在1.php的下级目录,那么3.php 是不是要改成include "test/4.php"呢? 结果证明改动后,会提示找不到 test/4.php。
再来看个例子:(例子二)
根目录下,有如下文件,
a/a.php, b/b.php, c/c.php, d/d.php;
a.php内容:- <?php
- # a.php
- echo dirname(__FILE__)."
- ";
- ?>
复制代码 b.php内容:- <?php
- # b.php
- include "../a/a.php";
- echo dirname(__FILE__)."
- ";
- ?>
复制代码 c.php内容:- <?php
- # c.php
- include "../b/b.php";
- echo dirname(__FILE__)."
- ";
- ?>
复制代码 d.php内容:- <?php
- # d.php
- include " ../c/c.php";
- echo dirname(__FILE__)."
- ";
- ?>
复制代码 运行d.php后会输出:
D:\www\a
D:\www\b
D:\www\c
D:\www\d
结论:不管.php脚本怎么被包含,dirname(__FILE__)得到的都是脚本所在文件夹的绝对路径.
再回看例子1:
我们根据例子2来对例子1的3.php进行改动。- <?php
- # 3.php
- $path=dirname(__FILE__);
- include $path."/4.php";
- include $path."/../2.php";
- ?>
复制代码 再运行1.php,就不会报错了. |