【问题标题】:PHP Including a File 2 directories backPHP包含一个文件2目录
【发布时间】:2012-06-28 22:51:18
【问题描述】:

这是我的情况。我有一个 config.php 文件,我想在所有文件夹之间共享它。它位于我的根目录:includes/config.php

我在我的 admin 文件夹中,正在尝试包含该配置文件。

// Does not work
require_once "../../includes/config.php";

// This will kind-of-work.. see below
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/config.php";

第二行的问题是我有 3 个不同的环境。本地主机、开发和生产。

我在 config.php 中定义了这些环境和所有设置。如果我正在生产,那么第二条线将完美运行。但是在我的开发和本地主机环境中..文件不在根目录中,它们在子文件夹中..所以唯一的方法是:

require_once $_SERVER['DOCUMENT_ROOT'] . "/sub_folder/includes/config.php";

好吧,我的 config.php 文件中有一个 PATH 常量,具体取决于环境,但我无法访问它,因为我试图包含该文件!

所以我不确定解决这个问题的最佳方法。我希望这是有道理的。

感谢任何帮助!

【问题讨论】:

  • 您的软件在任何情况下都应该使用类似的目录结构。如果我将我的 /usr/bin 目录移动到 /usr/lalala/bin 我不会想知道为什么我的程序不会启动。

标签: php path include require


【解决方案1】:

如果您将配置文件设置为 .ini 文件而不是 php。您有一个名为

的函数
parse_ini_file($filePath);

在 ini 文件中,您可以定义“生产”、“开发”、“暂存”环境。

这是实现可扩展性的更好方法。

这个 wiki 页面更好地解释了 ini 文件语法

http://en.wikipedia.org/wiki/INI_file

如果您想使用 php 文件,请在 config.php 中定义您的环境,并在所有常量上包装 if 条件。

对于,你可以使用的目录结构

realpath(dirname(__FILE__))

哪个好于

$_SERVER['DOCUMENT_ROOT']

希望这会有所帮助..

卡提克

【讨论】:

  • realpath( __ DIR __ ) 等价于 realpath(dirname(__ FILE __ ))
猜你喜欢
  • 2014-12-16
  • 2013-05-03
  • 1970-01-01
  • 2014-02-05
  • 2014-07-13
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多