php中的//和../之间有区别吗?

php中的//和../之间有区别吗?,php,directory-structure,Php,Directory Structure,我很好奇。/和/../在PHP中是否相同,所以我尝试了以下方法: require_once('/../frame/header.php'); require_once('../frame/header.php'); 他们俩都工作了。我是幸运还是他们真的做了同样的事?为什么?在您的上下文中,如果它们都起作用,则意味着您的脚本位于您可以访问的文件系统的根目录下,或者位于其中的一个级别。然而,他们不一样/../指的是文件系统根目录(并且。上一个目录,它刚刚被吃掉,仍然是根目录),而。/指的是比当前目

我很好奇
。/
/../
在PHP中是否相同,所以我尝试了以下方法:

require_once('/../frame/header.php');
require_once('../frame/header.php');

他们俩都工作了。我是幸运还是他们真的做了同样的事?为什么?

在您的上下文中,如果它们都起作用,则意味着您的脚本位于您可以访问的文件系统的根目录下,或者位于其中的一个级别。然而,他们不一样
/../
指的是文件系统根目录(并且
上一个目录,它刚刚被吃掉,仍然是根目录),而
。/
指的是比当前目录高一个目录。任何以
/
开头的路径都是来自文件系统根目录的绝对路径

从文件系统根目录以外的任何地方,这些文件系统都不能等效地工作

假设您的工作目录是
/var/www/scripts

require_once('../include.php');
将在
/var/www/include.php
中包含一个文件

但如果你在同一个地方

require_once('/../include.php');
…php将尝试加载文件系统根目录下的文件
/include.php
,该文件可能不存在

现在,许多web主机将为您提供一个文件系统,其根
/
也是web服务器的文档根,web服务器文档根与根只有一个目录级别,如
/www
。在这种情况下,
/../
可以正常工作,但如果您试图将其移动到另一个具有不同文件系统配置的服务器,请小心

因此,如果脚本的工作目录是
/www
,那么幸运的是,这两个目录的功能相同:

require_once('../include.php');
require_once('/../include.php');
两者都将在文件系统根目录中包含文件
/include.php


请注意,这不是特定于PHP的,而是使用
的文件系统的一个属性。通常…

在您的上下文中,如果两者都起作用,这意味着您的脚本位于您可以访问的文件系统的根目录下,或者位于其中的一个级别。然而,他们不一样
/../
指的是文件系统根目录(并且
上一个目录,它刚刚被吃掉,仍然是根目录),而
。/
指的是比当前目录高一个目录。任何以
/
开头的路径都是来自文件系统根目录的绝对路径

从文件系统根目录以外的任何地方,这些文件系统都不能等效地工作

假设您的工作目录是
/var/www/scripts

require_once('../include.php');
将在
/var/www/include.php
中包含一个文件

但如果你在同一个地方

require_once('/../include.php');
…php将尝试加载文件系统根目录下的文件
/include.php
,该文件可能不存在

现在,许多web主机将为您提供一个文件系统,其根
/
也是web服务器的文档根,web服务器文档根与根只有一个目录级别,如
/www
。在这种情况下,
/../
可以正常工作,但如果您试图将其移动到另一个具有不同文件系统配置的服务器,请小心

因此,如果脚本的工作目录是
/www
,那么幸运的是,这两个目录的功能相同:

require_once('../include.php');
require_once('/../include.php');
两者都将在文件系统根目录中包含文件
/include.php


注意,这不是特定于PHP的,而是使用
的文件系统的一个属性。通常…

在任何带有/的链接之前,表示您来自所处上下文的根。如果您已经在根目录或chroot目录中,那么这两条语句都是相同的。

前面任何带有/的链接都表示您来自所处上下文的根目录。如果您已经在根目录或chroot目录中,那么这两个语句都是相同的。

有关include()文件查找的详细信息,请单击此处::)有关include()文件查找的详细信息,请单击此处::)您确定不是指
/。/
。/
?您确定不是指
。/