【问题标题】:How to use a root path with require?如何在require中使用根路径?
【发布时间】:2017-02-23 06:16:21
【问题描述】:

我在网站中有一个私有部分,其文件夹结构如下

www.site.com/privatePath/secretFolder/login.php

然后是一些子文件夹,例如

www.site.com/privatePath/secretFolder/grandmasRecipes/applePie.php

login.php 旁边有一个共享的functions.php

www.site.com/privatePath/secretFolder/functions.php(创建 $connection,mysql 等等)

我有各种想要连接到functions.php 的子文件夹和文件,其中一些是动态创建的,因此该解决方案应该可以在任何文件/文件夹位置运行。

澄清一下:

因为可以在不同的文件夹中调用同一个文件,所以我希望它不是从文件所在的位置而是相对于根文件夹调用 functions.php 文件。所以没有相对的 ../ 等引用

我的问题: 如何从我网站中的任何文件访问所需的 php 文件?

【问题讨论】:

  • 动态生成的 PHP 文件听起来是一个非常糟糕的主意
  • @Phil 完全正确。它存在是因为菜单和子菜单以及页面链接是通过文件目录创建的。问题是每个页面都需要创建会话。
  • 尽管我认为依赖DOCUMENT_ROOT 是一个坏主意(对于初学者来说,如果您的 HTTP 服务器没有设置该属性,它将无法工作),我看不出为什么你的代码不起作用。你确定你的第 4 行的 applePie.php 脚本中没有 require 'functions.php'; 吗?
  • @Phil,检查拼写 1000 次,停止“解决”以询问 stackoverflow,返回到我的 IDE 页面,我看到我一直在编辑旧副本 arrgggghhhh SORRRYYY MAN,对不起堆栈溢出和对不起,谢谢菲尔。人为错误非常抱歉

标签: php path require


【解决方案1】:

我的建议是永远不要依赖任何外部路径配置(例如DOCUMENT_ROOT)。相反,使用相对于当前脚本的路径...

来自login.php

require_once __DIR__ . '/functions.php';

来自grandmasRecipes/applePie.php

require_once __DIR__ . '/../functions.php';

http://php.net/manual/language.constants.predefined.php#constant.dir


另一种方法可能是为当前环境设置include_path。您可以在文档根目录中的 .user.ini 文件中执行此操作

; /home/cpanelLogIn/public_html/.user.ini

include_path="/home/cpanelLogIn/public_html/:."

那么你可以简单地使用

require_once 'privatePath/secretFolder/functions.php';

任何地方

【讨论】:

  • 谢谢菲尔,很遗憾我不能保证生成的文件将从哪个文件夹中调用。所以我需要一个基于根的解决方案。
  • @Gamemorize 我完全不知道这意味着什么
  • 我的意思是,因为可以在不同的文件夹中调用同一个文件,所以我希望它不是从文件所在的位置而是相对于根文件夹调用 functions.php 文件
  • @Gamemorize 我添加了一个替代方案
  • 请在您的答案中添加 DOCUMENT_ROOT 可以使用,但您有保留,我会将其从我的问题中删除
【解决方案2】:

替代解决方案:

require ( $_SERVER['DOCUMENT_ROOT'] . "/privatePath/secretFolder/functions.php");

将从站点中的任何页面访问functions.php 文件。

【讨论】:

    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多