所以我在解决的PHP代码上遇到了这个问题,但我真的不知道它是如何工作的。
我试图将其添加到每个文件中
<?php include '/nav.php'; ?>
所以我只能有一个文件来编辑导航栏,而不是整个 php 文件。
当我将该代码添加到另一个文件夹(即/general/vision.php)的文件时出现问题,并且出现错误(找不到文件)。我虽然是因为我只在网站的根目录上有"nav.php"文件。
所以,只是为了好玩,我将/general/vision.php 文件的句子改为
<?php include '../nav.php'; ?>
它奏效了。我没有从根.php更改导航,它起作用了。
我很高兴它做到了,但我不知道为什么。这是怎么回事/../工程?这是否列在 PHP 文档中?
..
是"up a directory"的操作系统命名法。这不是特定于PHP的。
看看相对路径的概念......可能会有所启发。相对路径与绝对路径。
..
指的是父目录。这是所有操作系统的标准。
PHP 是一种服务器端脚本语言,这意味着根目录/
不是您网站的文档根目录,而是服务器上文件系统的根目录。
通过以 /
开头路径,您将指定文件的绝对路径,从根目录开始。例如,您可以使用..
从当前目录构建相对路径,以提升一个级别。
您还可以使用 PHP 中的 __DIR__
常量构建绝对路径,该常量始终包含包含当前 PHP 文件的目录的完整绝对路径,例如 include __DIR__ . '/../nav.php';
。
虽然您通过在包含路径中包含 ..
(父目录)解决了问题,但最好像这样包含 php 文件:
include $_SERVER['DOCUMENT_ROOT']."/nav.php";
然后,您可以将PHP文件保存在DOCUMENT_ROOT中的任何位置,并且仍然可以包含此nav.php
文件。
PS:将通用包含文件保持在DOCUMENT_ROOT
以上级别是一种很好的做法,这样浏览器就无法直接访问这些文件。