【发布时间】:2015-07-21 08:40:45
【问题描述】:
必须有一些我忽略的东西,但我似乎无法让我的包含使用相对路径按预期工作。在 MAMP 中,DocumentRoot 在 httpd.conf 中配置如下:
# MAMP DOCUMENT_ROOT !! Don't remove this line !!
DocumentRoot "/Applications/MAMP/projects/journalproject”
我在http://localhost:8888/ 上打开该站点,如果我使用这样的路径,包含的内容可以正常工作:
<?php include('nav.php'); ?>
但是,如果我将包含文件放入文件夹中,则包含不会显示在页面上:
<?php include('/includes/nav.php'); ?>
这是包含文件的路径:/journalproject/includes/nav.php
我从这里调用它:/journalproject/journals/index.php
如果我使用这样的路径,我也可以让包含工作:
<?php include('../includes/nav.php'); ?>
当锚链接使用相对路径找到相同文件时,我不确定为什么我需要为包含指定路径:
<a href="/includes/nav.php">Find nav include</a>
我不知道从这里去哪里。任何帮助将不胜感激。
【问题讨论】:
-
相对于您的文档根目录(大概是您的脚本从哪里运行,或者您的包含路径已设置)。
-
感谢您的帮助。我试过 没有成功,即使在位于根文件夹中的文件上也是如此。我认为 Apache 的文档根目录也会规定 PHP 的路径是我的误解。我尝试了这个,它可以工作:
-
很高兴您取得了一些成功。您还可以在 PHP 中指定一个 INCLUDE PATH,这些路径将被搜索以查找您的包含/要求。这样,您可以指定相对于包含路径的文件,而无需知道调用包含/要求的特定 .php 文件的位置:php.net/manual/en/function.set-include-path.php 即
set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'])
标签: php apache server-side-includes