2013-01-21 145 views
0

当我包含这样的文件:include("/testsitedir/include/subdir/inc.php");testsitedir文件夹中名为this.php的文件,我得到典型的failed to open stream: No such file or directory in ...\testsitedir\this.php错误。包括vs定位路径

但是,当我编写一个简单的HTML定位标记时:<a href="/testsitedir/include/subdir/inc.php">Test Link</a>(URL与include的相同)浏览器自动为我解析URL,并知道/表示我的网站根目录。

那么,我可以如何让我的包含方式以HTML定位标记所用的相同方式来解析URL?

为了更好地理解,下面是我正在尝试做的事情。我有一个头文件位于网站根目录内名为content的子目录中。我想弄清楚如何使用相同的URL在每个文件上包含标题。我的方法是只使用头文件的绝对URL。这成为一个问题的原因是因为我想用一个CONSTANT来随时更改网站的根目录。此外,该网站的根目录并不总是服务器的根目录。因此,当我想将站点放在子目录www.example.com/view/site/siteroot/的服务器上时,我会将常量SITE_ROOT定义为/view/site/siteroot,并包含使用include(SITE_ROOT."/includes/file.php);的所有文件。但是,include不能将/正向识别为站点根分隔符。我打算使用实际的网站名称,但出于安全原因,我不想启用url_include

回答

1

在PHP中使用定义的DOCUMENT_ROOT变量:

include($_SERVER['DOCUMENT_ROOT'] . "/testsitedir/include/subdir/inc.php"); 

the docs变量包含:

在其下当前脚本是 执行,如在服务器的配置中定义的文档根目录文件。

+0

嗯,我不觉得愚蠢。谢谢哥们。这似乎奏效了! – cbronson

+0

@cbronson'$ _SERVER'变量是相当难以捉摸的,除非你被显示,所以不要担心! –