【问题标题】:How to avoid hard coding the website root in php to include the "config file"?如何避免在 php 中硬编码网站根目录以包含“配置文件”?
【发布时间】: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


【解决方案1】:

你能改成这样吗?

$root = realpath($_SERVER["DOCUMENT_ROOT"]) . "/mysite/";
include $root ."config.php";

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多