相对/绝对路径的问题

时间:2015-06-08 15:01:13

标签: php path relative-path realpath pathinfo

我已经搜索了这样做的方法,所以它可以工作,但它们似乎都没有适用于所有路径,所以我想知道你是否可以给我一个如何做到这一点的方向:

这是结构:

Home Directoy
   config.php
   index.php
   includes/
      user_login.php
      applicant_track.php
   ucp/
      index.php

当我尝试在ucp / index.php中包含includes / user_login.php时,它不会让我说它无法找到该文件,我的代码在ucp / index.php中是:

if(!defined('root_path'))
{
    define('root_path', realpath(dirname(__FILE__)));
}

include(root_path . '\config.php');

switch($_GET["a"])
{
    case null: include(root_path . '\index.php'); break;
    case "login": include(root_path . '\includes\user_login.php'); break;
}

这就是我得到的:

Warning: include(E:\xampp\htdocs\aod_panel\ucp\config.php): failed to open stream:

我很乐意就如何解决这个问题提出建议。

3 个答案:

答案 0 :(得分:1)

您的根路径未指向项目的实际根目录。你的实际根是someLocation / yourProject。

您定义的根是someLocation / yourProject / includes /

然后,您要将文件包含在另一个文件夹中。因此无法找到它。定义实际项目根路径的根,而不是包含目录。

为此,您可以在配置文件中定义根路径并从那里读取它。

答案 1 :(得分:1)

使用以下路径

define('root_path', realpath(dirname(dirname(__FILE__))));

而不是用于定义真实路径的代码。因为您的文件夹结构是这样的。

请参阅index.php在ucp文件夹中,但您需要config.php的路径。所以回到一个目录并获取config.php路径。

答案 2 :(得分:0)

这很可能是您的其他脚本之一包含没有正确路径的config.php。使用以下代码设置包含路径

  set_include_path(get_include_path() . PATH_SEPARATOR . $root_path);

同时将include更改为require_once以防止多个包含。