这是个很容易犯的错误b.php:
include("./admin/a.php");当 b.php 单独用时
include("a.php");
没问题
一旦被 c.php 包含,此时的基准目录就不再是 "admin/" 而是 c.php 所在的目录!当然会找不到 a.php如果 b.php 被 c.php 包含了,就不要再单独用,否则无法谐调目录的问题

解决方案 »

  1.   

    这是个很容易犯的错误b.php:
    include("./admin/a.php");当 b.php 单独用时
    include("a.php");
    没问题
    一旦被 c.php 包含,此时的基准目录就不再是 "admin/" 而是 c.php 所在的目录!当然会找不到 a.php如果 b.php 被 c.php 包含了,就不要再单独用,否则无法谐调目录的问题
      

  2.   

    试试把b.php改为
    <?include(dirname(__FILE__)."/a.php");echo"b=".$a;?>
      

  3.   

    也就是说没法解决了
    两者不能同时用,唉而且包含b.php的文件岂不是都要放在同一个目录下
    to:alexxing(赤铸) 
    b.php:
    include("./admin/a.php");
    好像有问题
      

  4.   

    可以考虑用从web根目录开始的路径
    这样怎么也不会错
      

  5.   

    好像还是要定义一个相对的根目录
    比如:
    $dir="http://www.abc.com/";
    下有admin文件夹和c.php
    admin里有a.php和b.php
    那么就应该是
    b.php
    include($dir."admin/a.php");
    c.php
    include($dir."admin/b.php");
    是不是这个意思呀
      

  6.   

    http://www.abc.com/
    是互联网上的域名
    程序里包含全局 URL 可能会有权限问题(俺没试过)
    至少会影响效率和安全性,而且也没必要要想通用, binscut(何时走出迷雾) 说的用 __FILE__ 是个办法但是,从网站结构角度,如果出现了 ./admin/ 子目录下的文件和 ./ 下的文件都同时直接使用的情况,这是一种不好的结构:目录的层次结构和网站的层次结构应该一致,如果不一致,会有许多问题(这不,你已经遇到一个了),等你做的多了,网站规模越来越大,就有体会了你这个问题,我觉得最好的办法,就是在 ./ 目录下做一个 a1.php,包含 a.php:<?include('./admin/a.php')?>用的时候,只直接用 a1.php如果你的 c.php 在某个 DIR/ 目录下,a.php,b.php 在 DIR/admin/ 下,
    include("./admin/a.php");
    应该不会有问题(俺的网站有上百个 PHP 文件,都是这么包含的),不知道你的目录结构是怎么安排的
      

  7.   

    直接设置一个$URL变量存储在一个php文件里面
    然后要使用的时候就这么应用路径
    <?
    include($URL."the path");
    ?>
      

  8.   

    to:alexxing(赤铸) 你说的是不是这个意思
    c.php 在某个 DIR/ 目录下,a.php,b.php 在 DIR/admin/ 下
    b.php
    include("./admin/a.php");
    c.php
    include("./admin/b.php");
    像这样的话
    c.php可以,b.php单独用时就不行了何解
      

  9.   

    你用include_one或require_one试一试,它们是只调用一次的意思
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  10.   

    好像是
    include_once
    不过我的不能用
    不知是为什么
    是不是apache配置问题
    何解
      

  11.   

    include_one或require_one 解决的是重复包含的问题,跟这里的问题无关include/require 就是简单的文本替代,你把替代后的文件自己展开,看看是什么样:c.php:
    <?include("admin/b.php");echo"c=".$a;?>相当于把 c.php 直接写成:<?include("a.php");echo"b=".$a;echo"c=".$a;?>请问这个 c.php 能正常工作吗?具体问题我上面说得应该比较清楚了,你仔细看看吧================================================================
    人生最大的幸福莫过于顿顿有玉米吃
    (CSDN 论坛助手,挺好使!俺们拨号上网的有福了)
      

  12.   

    如果 b.php 被 c.php 包含了,就不要再单独用,否则无法谐调目录的问题也就是说没法解决了