包含vs锚点路径

时间:2013-01-21 18:08:31

标签: php include

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

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

那么,我可以如何使我的包含以与HTML锚标记相同的方式解析URL?

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

1 个答案:

答案 0 :(得分:1)

使用PHP中定义的DOCUMENT_ROOT变量:

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

the docs变量包含:

  

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