php包括不使用相对路径 - DocumentRoot问题? MAMP?

时间:2015-05-10 23:10:01

标签: php apache server-side-includes

必须有一些我忽略的东西,但我似乎无法使用相对路径让我的包含工作正常。在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

如果我使用这样的路径,我也可以让include工作:

<?php include('../includes/nav.php'); ?>

我不确定为什么当锚链接使用相对路径找到同一文件时,我需要指定include的路径:

<a href="/includes/nav.php">Find nav include</a>

我不知道从哪里开始。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为下面的代码不起作用,因为它被视为绝对路径,因为它以“/”开头,告诉PHP从Unix操作系统中的文字“/”目录查看:     <?php include('/includes/nav.php'); ?>

尝试:     <?php include('includes/nav.php'); ?>

答案 1 :(得分:0)

您可以指定相对于包含路径的文件,而无需了解调用include / require的特定.php文件所在的位置:

http://php.net/manual/en/function.set-include-path.php

set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'])