Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29956705
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类:

2009-07-19 09:31:54

php  include 路径解决.
举个例子:(例子一)
根目录有1.php, 2.php, test/3.php,test/4.php  1.php和2.php同一文件夹里, 3.php,4.php在下级目录.
1.php内容:
  1. # 1.php
  2. inlcude "test/3.php";
  3. ?>
复制代码
3.php内容:
  1. PHP
  2. # 3.php
  3. inlcude "4.php";
  4. include "../2.php";
  5. ?>
复制代码
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内容:
  1. # a.php
  2. echo dirname(__FILE__)."
    ";
  3. ?>
复制代码
b.php内容:
  1. # b.php
  2. include "../a/a.php";
  3. echo dirname(__FILE__)."
    ";
  4. ?>
复制代码
c.php内容:
  1. # c.php
  2. include "../b/b.php";
  3. echo dirname(__FILE__)."
    ";
  4. ?>
复制代码
d.php内容:
  1. # d.php
  2. include " ../c/c.php";
  3. echo dirname(__FILE__)."
    ";
  4. ?>
复制代码
运行d.php后会输出:    dirname(__FILE__); 这个东西绝是是你当前脚本的绝对位置值
D:\www\a
D:\www\b
D:\www\c
D:\www\d
结论:不管.php脚本怎么被包含,dirname(__FILE__)得到的都是脚本所在文件夹的绝对路径.
再回看例子1:
我们根据例子2来对例子1的3.php进行改动。
  1. # 3.php
  2. $path=dirname(__FILE__);        #定义好网站此目录的绝对地址值
  3. include $path."/4.php";         #
  4. include $path."/../2.php";      #我日呀。我居然将前面的一个/ 给忘掉了死也要记住
  5. ?>
复制代码
再运行1.php,就不会报错了.





阅读(845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~