“./path”
的点指的是工作目录。这是在命令行上键入“pwd”时打印的目录。这可能是脚本本身的目录,或者是首先运行的脚本的目录,但并非总是如此。
“/路径”
路径以斜杠开始是相对于顶级目录。这通常是服务器的根目录,但它也可以是挂载点,用户目录或Web根目录,具体取决于服务器的配置方式。
“../path”
“..” 指的是一个水平之上工作目录的目录。所以,如果工作目录是/ foo /酒吧则 “..” 是 “/ foo” 和 “../path” 指的是 “/富/路径”
目录名(__ FILE__)
dirname()“返回父目录的路径。” __FILE__是一个魔术常数,指的是使用它的文件的完整路径。所以如果你在/foo/bar/baz/file.php有一个脚本,__FILE__将是“/foo/bar/baz/file.php”,dirname(__ FILE__)将是“/ foo/bar/baz”
basename(dirname(dirname(__ FILE__)));
basename()“返回路径的结尾名称组件”。同样的规则适用于dirname(),因此前面示例中的dirname(__ FILE__)是“/ foo/bar/baz”dirname(dirname(__ FILE__))将是“/ foo/bar”。该路径的尾部组件是“bar”,所以对于这个__FILE__,basename(dirname(dirname(__ FILE__)))将是“bar”。
需要dirname(__ FILE__)。 DIRECTORY_SEPARATOR;
DIRECTORY_SEPARATOR是一个我不知道的常量,但显然它是在文件系统扩展中定义的。如果__FILE__是“/foo/bar/baz/file.php”,那么路径就是“/ foo/bar/baz /”。所以这个声明似乎是不完整的。 require()就像include(),只是如果找不到该文件,它会发出错误。路径永远不会引用文件,所以这个声明没有多大意义。
PATHINFO()
PATHINFO()分析的路径。将它传递给一个路径,它将给出一个包含dirname,basename,扩展名和文件名键以及解析路径的相应部分的关联数组。
define('BASE_PATH',realpath('。'));
realpath()将采用相对路径并将其变形为绝对路径。如前所述,“。”指的是工作目录,如果是“/ foo/bar/baz”,则realpath(“。”)将返回“/ foo/bar/baz”。 define()将会产生一个常量,所以这会将BASE_PATH常量设置为脚本的工作目录。如果工作目录在脚本过程中发生变化,或者如果您在子目录中包含文件,则可以使用常量来引用Web应用程序的顶层。
define('BASE_URL',dirname($ _ SERVER [“SCRIPT_NAME”]));
同样处理与定义()和目录名()。这里的新东西是$ _SERVER [“SCRIPT_NAME”]。如果脚本是从加载地址是example.com/foo/file.php那么这将是“/foo/file.php”和目录名()的是“/ foo”的。设置这个常量可能对Web应用程序中的页面互相引用很有用。