【问题标题】:How to set the include path in php [duplicate]如何在php中设置包含路径[重复]
【发布时间】:2013-03-05 09:15:17
【问题描述】:

我很难设置每页的包含属性。

当一切都在同一个目录中时,它似乎工作正常,但如果我从另一个目录引用一个页面,那么一切都会停止工作,因为它可能应该这样做。

现在在 php 中从不同目录引用类和文件的最佳方法是什么?一定有人想出了从不同文件夹引用文件的技巧。

目前,我正在按照以下方式进行操作

include ("../config/Authenticate.php");

现在 Authenticate.php 可以引用另一个类或包含另一个代码。那么如何让它们协同工作呢?

【问题讨论】:

  • 错误是什么?你试过什么?

标签: php path include


【解决方案1】:

您可以将其放在索引页的顶部,显然将路径更改为与您的应用程序相关的路径。然后从包含路径集中的任何位置简单地包含('some_file.php')。

$publicPath = getcwd();
chdir(__DIR__ . "/..");
$sitePath = getcwd();
chdir($publicPath);

$paths = array(
    $sitePath . '/config',
    $sitePath . '/config/foo',
    $sitePath . '/foo',
    $sitePath . '/foo/bar',
    get_include_path()
);

set_include_path(implode(PATH_SEPARATOR, $paths));
unset($paths);

编辑* 这假设您有一个公用文件夹,其中包含 index.php,并且所有其他文件都在公用文件夹之外。

【讨论】:

  • 谢谢。这确实奏效了。但是我认为我的方法可能更容易,因为如果存在递归包含,它可以动态工作。
  • 您可以随时使用您的方法在我发布的方法中设置数组。
  • 是的,我在答案中有点写了。您的代码和我的代码的集成将是理想的。
【解决方案2】:

您可以在包含路径中使用__DIR__ 来设置相对于文件的路径。

你包括会变成:

include (__DIR__ . "/../config/Authenticate.php");

【讨论】:

    【解决方案3】:

    如果您要包含的文件需要包含另一个文件,只要您在该文件中也有包含脚本,它应该可以工作。

    【讨论】:

      【解决方案4】:

      这是一种适合我的方法。

      $arr_path = explode(DIRECTORY_SEPARATOR, __DIR__);
      
      $arr_path = array_reverse($arr_path);
      $depthCounter=0;
      for($i=0;$i<count($arr_path);$i++){
          // just replace BDW with your main directory
          if ($arr_path[$i] === "BDW"){
              $depthCounter = $i;
          }   
      }
      // clear array
      unset($arr_path);
      
      $DEPTH = "";
      for($i=0;$i<$depthCounter;$i++){
          $DEPTH= $DEPTH . "../";
      }
      
      
      include ($DEPTH . 'config/SessionStart.php');
      

      这不是最干净的代码。但它似乎工作。整合@MonsterTKE 的这种方法可能适用于大多数人。

      【讨论】:

        猜你喜欢
        • 2010-09-25
        • 2011-09-24
        • 2012-11-10
        • 2014-03-03
        • 2019-07-25
        • 2019-12-30
        • 2012-12-17
        • 2012-04-23
        • 1970-01-01
        相关资源
        最近更新 更多