解决方案 »

  1.   

    init.inc.php:
    require 'config/config.inc.php';init.inc.php里面不是包括了config.inc.php 么,当然能找到啦。
      

  2.   

    php不是参照入口文件的路径吗?也就是说 在找config.inc.php时应该是按“uploads/config/config.inc.php”这个路径找,但显然这个路径不存在,存在的是“uploads/include/config/config.inc.php”。难道不是这样?
      

  3.   

    require 'config/config.inc.php';
    不是在 init.inc.php 中执行的吗?
    所以既然只有 uploads/include/config/config.inc.php 存在,当然就加载他了你#2的描述是正确的
    如果你有 uploads/config/config.inc.php 文件,那么这个文件将被优先加载
    也就是说,你可以用这种方法干预应用系统的行为
      

  4.   

    下面是用我的伪代码描述require请求文件的处理,看对否:
    相对路径:前面带./或者../的路径,如'./include/init.inc.php'
    伪相对路径:前面不带./或者../且又不是绝对路径的路径,如'config/config.inc.php'
    当前工作目录:web环境下,即入口文件所在目录if(path为绝对路径){
        file_path=path;
    }else if(path为相对路径){
        file_path=conbine(当前工作目录,path);
    }else{
        //伪相对路径
        dir_list=include_path;
        dir_list.add(当前工作目录);
        dir_list.add(调用语句所在目录);
        foreach(dir_list as dir){
            temp_path=conbine(dir,path);
            if(temp_path存在){
                file_path=temp_path;
                return;
            }
        }
    }访问index.php页时
    require 'config/config.inc.php';
    其实生效的是
    file_path=conbine(调用语句所在目录,path)
    这里调用语句所在目录,即init.inc.php文件所在目录,从而正确找到文件。