【问题标题】:Issues with defining a path for PHP include across multiple folders为 PHP 定义路径的问题包括跨多个文件夹
【发布时间】:2014-09-04 20:45:05
【问题描述】:

不知道该怎么做。

我想要一种包含 PHP 文件的方法,以便我可以从任何级别文件夹中的任何文件中调用相同的文件,并且它始终指向相同的文件。

所以我有一个网站设置,例如

root
init.php
databaseconn.php
index.php
/css/
    main.css
/settings/
    user_profile.php
/template/
    sidebar.php
/includes/
    get_user.php

例如,在 user_profile.php 中,我包含了 sidebar.php 文件。

现在我会使用:

../template/sidebar.php

然后在侧边栏文件中添加 ../includes/get_user.php。

效果很好。然而问题是我的 index.php 页面上也包含了相同的 sidebar.php 文件。这会导致问题。

为了解决这个问题,我试过这个:

<?php
  $isDevelopment = true;
  $baseInclude = ($isDevelopment ? '//localhost/website/' : '//www.site.com/');
?>

然后当包含我使用过的站点中的任何文件时:

include $baseInclude. 'template/sidebar.php';

但是,当我这样做时,我得到了一个错误。

错误显示:

Warning: include(//localhost/website/template/sidebar.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/website/settings/user_profile.php on line 46

我不明白为什么它在显示时会在 user_profile.php 文件中查找该文件,并且我已经定义它来自 localhost 路径...

有什么想法吗?

【问题讨论】:

  • 为什么不通过 DIR 定义 init.php 中的根路径(不是粗体,下划线废话 - 愚蠢的 stackoverflow 格式)并使用定义的相对路径常数
  • 除此之外:通过 http 包含文件将不起作用,除非包含不需要来自调用脚本的任何信息并且除了 html 之外不返回任何内容。问题是它将在不同的请求中单独处理。

标签: php path absolute-path


【解决方案1】:

一种可能的解决方案:

$baseInclude = getcwd();

【讨论】:

    【解决方案2】:

    在您的 init.php 文件中将其添加到顶部

    define('ROOT', __DIR__);

    现在在你的其他文件中使用

    include (ROOT . '/full/path/to/file.php');

    在你的代码中它看起来像这样

    include (ROOT . '/template/sidebar.php');

    【讨论】:

      猜你喜欢
      • 2011-05-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 2010-11-07
      相关资源
      最近更新 更多