【问题标题】:What is the difference between / addressing and ./ addressing? [duplicate]/寻址和./寻址有什么区别? [复制]
【发布时间】:2019-02-27 10:42:16
【问题描述】:

我正在一个 PHP 网站上工作,我需要在其中获取 Images 目录中的文件列表。 PHP.net 中的示例显示了仅使用正斜杠的寻址,如示例中所示。这种寻址模式不起作用。相反,地址需要以 ./ 开头。有什么区别?

<?php
$dir    = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);

print_r($files1);
print_r($files2);
?>

搜索其他问题已解决单点和双点,但我没有看到没有点的正斜杠的帖子。

【问题讨论】:

  • ./=现任主管/=根目录

标签: php relative-path scandir


【解决方案1】:

. 表示当前目录。例如,假设您当前的路径是/var/www

如果您说./tmp,您要查找的目录是/var/www/tmp

如果你说/tmp,你正在寻找/tmp(从根开始)

【讨论】:

    【解决方案2】:

    也许您是 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() 调用它或从不同的目录调用它,也可以使用脚本。

    【讨论】:

    • . 不是脚本所在的路径。它是当前工作目录。除非有人或某事对其进行了更改,否则这将是脚本运行的路径,而不是它所在的路径。
    【解决方案3】:
    • / 表示服务器的 root 目录。如/var/www/
    • ./ 表示脚本正在执行的当前目录。这相当于getcwd()。例如,您当前在/php/scripts,它将引用/var/www/php/scripts
    • ../ 表示父文件夹,可以链接向上移动多个级别。

    每个的使用取决于您尝试从哪个脚本操作哪个文件或文件夹。

    如果您尝试从/var/www/php/scripts/script.php 访问/var/www/tmp,您可以使用:

    • ../../tmp
    • /tmp

    请注意,如果您不确定需要“向上移动”多少级,您可以添加无限数量的../;它不会从根中“爆发”。话虽如此,直接从根目录引用通常更直接。

    【讨论】:

    • /不表示网站的根目录,它表示服务器的根目录。
    • 你是对的。
    猜你喜欢
    • 2019-11-05
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多