2013-10-15 168 views
5

什么PHP包括 “../” 与 “/../”

require("../classes/M8.php"); 

require("/../classes/H8.php"); 

之间的差异如何将包括路径将有什么不同?

+8

第二个例子不起作用,因为“/”是文件系统的根,上面没有任何东西。只要使用绝对路径(使用__DIR__常量)并且你没事的话,你就会完全知道将包含什么。 –

+0

@Mirtes,“/”将起作用,因为在失败之前,PHP将在包含文件的几个不同路径中查找。感谢__DIR__,解决了我与包含的每个问题。 – user1463822

回答

4

A /在路径的开始处将指向根目录。这被称为绝对路径。其他任何内容都与当前文件夹有关。这被称为相对路径。

IBM描述的差异here

绝对路径名表示从/(根)目录下的目录或文件的完整名称。无论您在文件系统中工作的位置如何,您都可以通过指定其绝对路径名称来查找目录或文件。绝对路径名以斜杠(/)开头,该符号代表根目录。路径名/ A/D/9是9的绝对路径名。第一个斜杠(/)表示/(根)目录,它是搜索的起始位置。路径名的其余部分将搜索指向A,然后到D,最后到9.

与完整路径名不同,相对路径名称指定基于当前工作目录的目录或文件。对于相对路径名称,可以使用符号点点(..)在文件系统层次结构中向上移动。点点(..)代表父目录。由于相对路径名称指定从当前目录开始的路径,因此它们不以斜杠(/)开头。相对路径名称用于指定当前目录中文件的名称或文件系统中当前目录级别之上或之下的文件或目录的路径名称。如果D是当前目录,则访问10的相对路径名称是F/10。但是,绝对路径名始终为/ A/D/F/10。另外,访问3的相对路径名是../../B/3。

想象一下你正在采用这种结构,例如,在MyScript.php进行工作:

Home 
    -- Foo 
    -- Example.php 
    -- Bar 
    -- Scripts 
     -- MyScript.php 

如果你想包括Example.phpFoo文件夹中,你既可以指定:

../../Foo/Example.php /* Relative path: ..Bar/..Home (Root)/Foo/Example.php */ 

或者:

/Foo/Example.php /* Absolute path: Home (Root)/Foo.Example.php */ 
14

/..是相对于服务器根目录的路径。
../是相对于当前脚本文件夹的路径。

我看到一个请求获取更多信息。

如果你在你的服务器上的文件夹中,说:

/usr/local/apache2/www/example.php

然后 在使用example.php参考可以作出一个绝对路径,所以相对于服务器的根目录:/usr/local/apache2/hidden/credentials.php

或者同一个文件可以使用相对于当前文件的路径到达:../hidden/credentials。 PHP。请注意,每个../集都会将您的服务器文件夹结构中的一个目录向上移动。

+0

很好,+1。 –