参考PHP中的公共根 - 最佳实践

时间:2010-06-08 16:06:40

标签: php

我一直在使用$ _SERVER [“DOCUMENT_ROOT”]环境变量来引用我的应用中的公共根。现在我意识到这不是很可靠。我正在考虑一种方法,我在index.php中根据魔术常量定义一个常量。这样的事情:

define("PUBILC", __DIR__."/");

虽然我不确定。

你会推荐什么方法?

4 个答案:

答案 0 :(得分:2)

如果所有请求都通过你的index.php,那么定义一个常量会有一个很好的,经常使用的想法。我也看到了使用(虚拟)主机配置或.htaccess定义环境变量的设置,但我认为它不太透明,便于携带。设置变量中的硬编码路径经常被使用,但更少“自动改变”然后人们希望。总而言之,我同意你的想法。

答案 1 :(得分:2)

绝对没有$_SERVER['DOCUMENT_ROOT']分散在整个应用程序中。 Apache可以配置为使用VirtualDocumentRoot将文档根目录设置为该目录但更改DOCUMENT_ROOT环境变量,这可能导致网站损坏。

根据您的方法,我想在我的应用顶部定义DOC_ROOT,并在我需要的任何地方使用它来引用文档根目录。

答案 2 :(得分:0)

你可以做类似的事情,但把它放在一些包含在你所有页面中的常见包含文件中。这适用于直接访问您网站上的网页而不通过主索引页的访问者。

例如,如果您的utilities.php文件夹中有doc_root/inc,并且它包含在您的所有网站页面中,则可能如下所示:

<?php
function GetDocumentRoot()
{
    return dirname(dirname(__FILE__));
}

function WriteHeader()
{
    //...
}

// more utility functions...
?>

答案 3 :(得分:0)

在我的项目中,我使用以下几行(以及一些其他行)进行了配置:

// set the root directory for the files
define('ROOT_DIR', "/path/to/my/htdocs/project_name/");
// set the root path for URLs
define('ROOT_PATH', "http://".$_SERVER['HTTP_HOST']."/project_name/");

在每个php文件中,我使用以下行包含此config.php:

require_once($_SERVER['DOCUMENT_ROOT'].'/config_project_name.php');

正如您所看到的,使用配置文件的前缀,您可以将它们全部放入根目录中,并且您仍然可以灵活地在不同的PC或服务器上拥有相同的项目。