5

所以我遇到了我解决的 PHP 代码的问题,但我真的不知道它是如何工作的。

我试图将其添加到每个文件中

<?php include '/nav.php'; ?>

所以我只能有一个文件来编辑导航栏而不是整个 php 文件。

当我将该代码添加到另一个文件夹(即/general/vision.php)的文件中时出现了问题,并且出现错误(找不到文件)。我认为这是因为我在站点的根目录中只有“nav.php”文件。

所以,只是为了好玩,我把 /general/vision.php 文件的那句话改成了

<?php include '../nav.php'; ?>

它奏效了。我没有从根目录更改 nav.php,它起作用了。

我很高兴它做到了,但我不知道为什么。/../ 是如何工作的?是否在 PHP 文档中列出?

4

4 回答 4

5

..是“向上目录”的操作系统命名法。这不是特定于 PHP 的。

看看相对路径的概念..可能会有所启发。相对路径与绝对路径

于 2013-09-09T17:15:43.850 回答
4

..指父目录。这对于所有操作系统来说都是相当标准的。

于 2013-09-09T17:14:17.797 回答
1

PHP 是一种服务器端脚本语言,这意味着根目录/不是您网站的文档根目录,而是服务器上文件系统的根目录。

通过以您的路径开始,/您指定了文件的绝对路径,从根目录开始。您可以通过使用例如..提升一级来构建当前目录的相对路径。

您还可以使用 PHP 中的常量构建绝对路径__DIR__,它始终包含包含当前 PHP 文件的目录的完整绝对路径,例如include __DIR__ . '/../nav.php';.

于 2013-09-09T17:18:18.173 回答
1

虽然您通过..在包含路径中包含(父目录)来解决您的问题,但最好包含这样的 php 文件:

 include $_SERVER['DOCUMENT_ROOT']."/nav.php";

然后,您可以将 PHP 文件保存在 DOCUMENT_ROOT 中的任何位置,并且仍然可以包含此nav.php文件。

PS:将常见的包含文件保持在上一级是一种很好的做法,DOCUMENT_ROOT这样浏览器就不能直接访问这些文件。

于 2013-09-09T17:18:25.753 回答