【问题标题】:PHP_include file from nested folders嵌套文件夹中的 PHP_include 文件
【发布时间】:2014-01-11 21:18:14
【问题描述】:

我正在做一个学校项目。我的索引有效,但是当我点击位于 labs/1/1.html 的“Lab 1 Q1”时,它会将我带到该页面,但我的 <?php include('/main-nav.php') ?> 无法正常工作。我还尝试了<?php include($_SERVER['DOCUMENT_ROOT']."/mobile-nav.php") ?>,但它不起作用,我相信这是因为我目前正在使用 wamp,所以我相信“根”是 C:\wamp,里面有 www/school/index.php。

我怎样才能有一个没有硬编码的工作文件路径?

【问题讨论】:

  • 第一个问题:main-nav.php 相对于您包含它的文件在哪里?

标签: php html wamp


【解决方案1】:

include 方法使用服务器端路径,因此/main-nav.php 正在您硬盘驱动器的根文件夹中查找文件。

一种选择是使用相对路径:

include('../../main-nav.php'); // Go up two levels

【讨论】:

  • 这实际上会从当前返回 2 个目录。
  • @RPM 是的!这就是我在评论中指出的。如果您查看他的labs/1/1.html 页面的路径,看起来他可能需要上两层。
【解决方案2】:

您是否尝试过使用相对路径?

   <?php include('./main-nav.php') ?>

【讨论】:

  • 哦,你打败了我!
【解决方案3】:

对于包含路径,请查看 php.ini 中的 include_path 指令

你也可以试试

<?php phpinfo() ?>

并搜索“include_path”指令

“/”在 Windows 操作系统中没有意义。

【讨论】:

  • 实际上/ 在 Windows 上效果很好。假设您确实想从根硬盘文件夹开始。
  • 没关系,但是如果你有 2 个硬盘驱动器是哪个根目录。它有效,但您不确定结果。
  • 您可以完全确定结果。我以这种方式在带有路径的 Windows 服务器上运行了许多生产 PHP 应用程序。
  • 我只想说,如果 document_root 在 C 上,那么 root 就是 C 的根,如果 document_root 在 D 上,那么 root id D:\。想象一下,您有两台服务器,其中第一个在 C 上带有 DOCUMENT_ROOT,第二个在 D 上,如果您搜索“/WINDOWS/SYSTEM32”作为示例,您将无法确定结果。没有?
  • 您的说法是/ 在 Windows 上“没有意义”。这根本不是真的。当然,您需要知道您的文档根目录在哪里。你到底为什么要在 system32 中包含一些东西?我们正在讨论包含一个 PHP 脚本,它与执行包含的 PHP 脚本位于同一文档根目录中。跨驱动器访问在这里根本不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 2011-08-10
  • 2017-08-25
  • 2014-01-15
  • 1970-01-01
相关资源
最近更新 更多