【问题标题】:php includes not working with relative path - DocumentRoot issue? MAMP?php 包括不使用相对路径 - DocumentRoot 问题? MAMP?
【发布时间】: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


【解决方案1】:

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

尝试: &lt;?php include('includes/nav.php'); ?&gt;

【讨论】:

    【解决方案2】:

    您可以指定相对于包含路径的文件,而无需注意调用包含/要求的特定 .php 文件的位置:

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多