这很简单但很多时候都很混乱..
当我们通过以下模式包含文件时,我需要知道它意味着什么(我在许多地方看到的可能不仅仅是这个)
这意味着什么?
"./path"
"/path"
"../path"
dirname(__FILE__)
basename(dirname(dirname(__FILE__)));
require dirname(__FILE__) . DIRECTORY_SEPARATOR;
pathinfo()
define('BASE_PATH',realpath('.'));
define('BASE_URL', dirname($_SERVER["SCRIPT_NAME"]));
答案 0 :(得分:2)
“./ path”
点指的是工作目录。这是在命令行上键入“pwd”时打印的目录。这可能是脚本本身的目录,也可能是首先运行的脚本目录,但并非总是如此。
“/路径”
以斜杠开头的路径相对于最顶层的目录。这通常是服务器的根目录,但它也可以是挂载点,用户目录,也可以是Web根目录,具体取决于服务器的配置方式。
“../路径”
“..”指的是工作目录上一级的目录。因此,如果工作目录是/ foo / bar,那么“..”是“/ foo”而“../path”是指“/ foo / path”
目录名(FILE __ __)
dirname()“返回父目录的路径。” __FILE__是一个魔术常量,指的是使用它的文件的完整路径。因此,如果你在/foo/bar/baz/file.php有一个脚本,__ FILE__将是“/foo/bar/baz/file.php”,而dirname(__ FILE__)将是“/ foo / bar / baz”< / p>
基名(目录名(目录名(FILE __ __)));
basename()“返回路径的尾随名称组件”。同样的规则适用于dirname(),因此前面示例中的dirname(__ FILE__)是“/ foo / bar / baz”dirname(dirname(__ FILE__))将是“/ foo / bar”。此路径的尾部组件为“bar”,因此对于此__FILE__,基本名称(dirname(__ FILE__)))将为“bar”。
需要dirname(__ FILE__)。 DIRECTORY_SEPARATOR;
DIRECTORY_SEPARATOR是一个我不知道的常量,但显然它是在文件系统扩展中定义的。如果__FILE__是“/foo/bar/baz/file.php”,那么路径就是“/ foo / bar / baz /”。所以这句话似乎不完整。 require()与include()类似,只是如果找不到文件则会出错。路径从不引用文件,所以这个语句没有多大意义。
PATHINFO()
pathinfo()解析路径。传递一个路径,它将给出一个关联数组,其中包含dirname,basename,extension和filename key以及解析路径的各个部分。
定义( 'BASE_PATH',真实路径() '');
realpath()将采用相对路径并将其转换为绝对路径。如前所述,“。”指的是工作目录,如果是“/ foo / bar / baz”,那么realpath(“。”)将返回“/ foo / bar / baz”。 define()将生成一个常量,因此可以将BASE_PATH常量设置为脚本的工作目录。如果工作目录在脚本过程中发生更改,或者如果要在子目录中包含文件,则可以使用常量来引用Web应用程序的顶层,这可能很有用。
define('BASE_URL',dirname($ _ SERVER [“SCRIPT_NAME”]));
与define()和dirname()相同。这里新的东西是$ _SERVER [“SCRIPT_NAME”]。如果加载脚本的地址是example.com/foo/file.php,那么这将是“/foo/file.php”,而dirname()就是“/ foo”。设置此常量对于Web应用程序中相互引用的页面非常有用。