Возможно, вы являетесь пользователем Windows и не знакомы с тем, как Linux обращается к файлам, но, по сути, букв дисков нет. /
- корень файловой системы, в основном эквивалент C:\
в Windows (хотя и не совсем). Он также работает в 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()
или позвонив из другого каталога.
person
Havenard
schedule
23.09.2018
./
= текущий директор/
= корневой каталог - person   schedule 24.09.2018