【发布时间】:2013-08-24 01:27:09
【问题描述】:
我想知道如何在不使用相对路径或直接绝对路径(硬编码路径)的情况下将代码(配置文件)包含在存在于不同目录深度的 php 文件中。 我不喜欢使用以下内容:
- ../config.php
- ../../config.php
- ../../../config.php
- c:/wamp/www/mysite/config.php
这个想法是避免在以下情况下修改多个文件:
- 文件移动到其他目录
- 应用程序的根目录已更改
我所做的是将以下内容放入我的配置文件中:
define("ROOT", dirname(__FILE__));
在其他文件中:
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
include $root ."/mysite/config.php";
您可以看到我对我的网站 "/mysite" 的文件夹进行了硬编码。 可以避免硬编码这个目录名吗?
【问题讨论】:
-
有一点你需要决定“我必须为我的程序提供多少信息才能找到正确的文件”。如果您移动文件,但它始终具有相同的名称,我想您可以“在整个树中搜索信息”。但是某处你需要在地上放一根木桩。我想知道你是不是因为这件事分散了自己的注意力……
-
dirname(__FILE__)可以替换为__DIR__如果你使用的是 PHP 5.3 或更高版本(你应该是)。 -
嗨@Floris,我来自ASP.NET,其中每个文件都可以直接访问配置文件(web.config),因此以php 的工作方式包含文件对我来说是新的。这就是我要问的原因。您可以将其视为下注的最佳方式。
标签: php include absolute-path