"/../*.php"和"*.php"之间的区别是什么?

5

我遇到了一个PHP代码问题,最终解决了,但我并不知道它是如何工作的。

我尝试将这个代码添加到每个文件中。

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

所以我只需要编辑一个文件就可以改变导航栏,而不是整个php文件。

当我将这段代码添加到另一个文件夹的文件中(例如/general/vision.php),出现了问题,我收到了一个错误提示(找不到文件)。我认为这是因为我只在站点的根目录下有'nav.php'文件。

所以,为了好玩,我将/general/vision.php文件的语句改成了

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

它起作用了。我没有改变根目录下的nav.php文件,它就可以工作。

我很高兴它可以工作,但我不知道为什么。/../是如何起作用的?PHP文档中有列出吗?


2
阅读有关绝对路径和相对路径的内容。 - Sverri M. Olsen
4个回答

5

..是操作系统用于表示“返回上级目录”的符号。这并非仅限于PHP。

了解相对路径的概念可能会有所帮助。请参考相对路径与绝对路径


4
< p >..指代父目录。对所有操作系统而言,这都是非常标准的。


1

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

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

那么您可以将PHP文件放在DOCUMENT_ROOT的任何位置,并仍然能够包含此nav.php文件。

注:最好将常见的包含文件保留在DOCUMENT_ROOT上一级,这样浏览器无法直接访问这些文件。


实际上,最好的做法是根本不将包含文件放在您的 Web 服务器文档根目录下。 - Gerry
@Gary:没错,我同意并且自己也一直遵循这个做法。 - anubhava

1

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接