0

我目前正在使用以下代码在我的网页中包含一个文件:

require_once $_SERVER['DOCUMENT_ROOT'] . '/include/file.php';

但是,我现在已经编辑了我的系统,因此我将 URL 输入到根目录中的数据文件中,这使我的站点的其他部分起作用并允许我使用不同的目录。

简而言之,我在网站上使用了启动页面,现在根目录是 /directory 而不是根目录,因此我的数据文件中的 URL 是http://www.domain.com/directory

所以,我需要解决的是如何使用包含 URL 的数据文件中的变量将此行指向目录

所以$_SERVER['DOCUMENT_ROOT']变得无关紧要,因为我需要从不再位于根目录中的数据文件中的变量中获取数据。

它需要是这样的:

require_once (variable from file a few directories back) + absolute path to file;

如果我需要使用与根目录不同的目录构建站点,我也希望这行代码能够过时。

我希望这是有道理的!

4

2 回答 2

2

创建一个SITE_ROOT并使用它。这样,它将适用于任何目录更改。

define('SITE_BASE', '/directory/');
define('SITE_ROOT', $_SERVER['DOCUMENT_ROOT'] . SITE_BASE);

然后,您可以SITE_BASE用于创建 URI:

<a href="<?php echo SITE_BASE ?>subdir/">link</a>

以及SITE_ROOT访问系统上的文件:

require_once SITE_ROOT . 'include/file.php';
于 2011-09-26T22:28:09.463 回答
0

您是否考虑include_path过在php.ini文件中设置?例如,我自己的php.ini文件有include_path = ".:/path/to/web/root",这让我不用担心我的文件在包含它们时在哪里。

在您的情况下,您可能希望将其设置为include_path = ".:/path/to/web/root/directory". 如果您不知道 Web 根目录的路径,只需运行echo $_SERVER['DOCUMENT_ROOT'];查找即可。

这个解决方案是“面向未来的”,因为您只需要更改该php.ini值,一切都会到位。

于 2011-09-26T22:29:57.760 回答