/寻址和./寻址有什么区别?
What is the difference between / addressing and ./ addressing?
我正在 PHP 网站上工作,我需要在该网站上获取 Images 目录中的文件列表。 PHP.net 中的示例显示了仅使用正斜杠的寻址,如示例中所示。这种寻址模式不起作用。相反,地址需要以 ./ 开头。有什么区别?
<?php
$dir = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);
print_r($files1);
print_r($files2);
?>
搜索其他问题解决了单点和双点,但我没有看到关于不带点的正斜杠的帖子。
.
表示当前目录。例如,假设您当前的路径是 /var/www
:
如果你说./tmp
你要查找的目录是/var/www/tmp
如果你说/tmp
你正在寻找/tmp
(从根开始)
/
表示服务器的 root 目录。如 /var/www/
.
./
表示脚本正在执行的 current 目录。这相当于 getcwd()
.例如,您当前在 /php/scripts
,它将引用 /var/www/php/scripts
。
../
表示父文件夹,可以链接上移多级。
每个的使用取决于您试图从哪个脚本操作哪个文件或文件夹。
如果您尝试从 /var/www/php/scripts/script.php
访问 /var/www/tmp
,您可以使用:
../../tmp
/tmp
请注意,如果您不确定需要多少级别 'move up',您可以添加无限数量的 ../
;它不会 'break out' 的根。话虽如此,直接从根引用通常更直接。
也许您是 Windows 用户并且不熟悉 Linux 寻址文件的方式,但本质上没有驱动器号。 /
是文件系统的根,基本上等同于 Windows 上的 C:\
(虽然不完全是)。它也适用于 Windows,除了它会引用您的脚本所在的分区的根目录 运行,因为 Windows 将每个分区分隔在不同的驱动器号上。
在文件系统的根目录中有一个名为 tmp
的标准文件夹,如果要引用它,则需要指定完整路径,/tmp
。
仅使用 tmp
或 ./tmp
将引用本地路径上的 tmp
文件夹,这是一个完全不同的文件夹,只是名称相同(甚至可能不存在) ).
当您不想指定完整路径而是指定某个地方的相对路径或本地路径时,您不要将 /
放在开头。你可能什么都不放,或者你可以放 ./
来明确这是相对于你当前工作目录的路径,即 .
.
无论您的脚本在哪个文件夹中运行,.
始终代表它。在大多数情况下实际上不需要放置 ./
,因为相对路径是隐式的。
在相关说明中,..
代表父文件夹。
例如,我的脚本是/var/www/script.php
,当我运行它时:
.
是文件夹 /var/www
.
fopen('note.txt', 'r')
将打开文件 /var/www/note.txt
进行阅读。
fopen('./note.txt', 'r')
会做同样的事情。
..
是文件夹 /var
.
../../tmp
等同于 /tmp
.
请注意,即使您 include()
来自子文件夹的脚本,.
表示的当前工作目录仍然保持不变。
这可能会使事情变得混乱,因为 .
可能不是您包含的脚本所在的文件夹。要解决此问题,请使用 __DIR__
获取您的脚本所在的文件夹,它将获取脚本的当前文件夹,即使您是通过 include()
调用它或从其他目录调用它。
我正在 PHP 网站上工作,我需要在该网站上获取 Images 目录中的文件列表。 PHP.net 中的示例显示了仅使用正斜杠的寻址,如示例中所示。这种寻址模式不起作用。相反,地址需要以 ./ 开头。有什么区别?
<?php
$dir = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);
print_r($files1);
print_r($files2);
?>
搜索其他问题解决了单点和双点,但我没有看到关于不带点的正斜杠的帖子。
.
表示当前目录。例如,假设您当前的路径是 /var/www
:
如果你说./tmp
你要查找的目录是/var/www/tmp
如果你说/tmp
你正在寻找/tmp
(从根开始)
/
表示服务器的 root 目录。如/var/www/
../
表示脚本正在执行的 current 目录。这相当于getcwd()
.例如,您当前在/php/scripts
,它将引用/var/www/php/scripts
。../
表示父文件夹,可以链接上移多级。
每个的使用取决于您试图从哪个脚本操作哪个文件或文件夹。
如果您尝试从 /var/www/php/scripts/script.php
访问 /var/www/tmp
,您可以使用:
../../tmp
/tmp
请注意,如果您不确定需要多少级别 'move up',您可以添加无限数量的 ../
;它不会 'break out' 的根。话虽如此,直接从根引用通常更直接。
也许您是 Windows 用户并且不熟悉 Linux 寻址文件的方式,但本质上没有驱动器号。 /
是文件系统的根,基本上等同于 Windows 上的 C:\
(虽然不完全是)。它也适用于 Windows,除了它会引用您的脚本所在的分区的根目录 运行,因为 Windows 将每个分区分隔在不同的驱动器号上。
在文件系统的根目录中有一个名为 tmp
的标准文件夹,如果要引用它,则需要指定完整路径,/tmp
。
仅使用 tmp
或 ./tmp
将引用本地路径上的 tmp
文件夹,这是一个完全不同的文件夹,只是名称相同(甚至可能不存在) ).
当您不想指定完整路径而是指定某个地方的相对路径或本地路径时,您不要将 /
放在开头。你可能什么都不放,或者你可以放 ./
来明确这是相对于你当前工作目录的路径,即 .
.
无论您的脚本在哪个文件夹中运行,.
始终代表它。在大多数情况下实际上不需要放置 ./
,因为相对路径是隐式的。
在相关说明中,..
代表父文件夹。
例如,我的脚本是/var/www/script.php
,当我运行它时:
.
是文件夹/var/www
.fopen('note.txt', 'r')
将打开文件/var/www/note.txt
进行阅读。fopen('./note.txt', 'r')
会做同样的事情。..
是文件夹/var
.../../tmp
等同于/tmp
.
请注意,即使您 include()
来自子文件夹的脚本,.
表示的当前工作目录仍然保持不变。
这可能会使事情变得混乱,因为 .
可能不是您包含的脚本所在的文件夹。要解决此问题,请使用 __DIR__
获取您的脚本所在的文件夹,它将获取脚本的当前文件夹,即使您是通过 include()
调用它或从其他目录调用它。