2013-10-15 3 views
5

чем разница междуPHP включают "../" против "/../"

require("../classes/M8.php"); 

и

require("/../classes/H8.php"); 

Как будет включать в себя путь будет отличаться?

+8

Второй пример не будет работать, потому что «/» - это корень файловой системы, и над ним ничего нет. Просто используйте абсолютные пути (с константой __DIR__), и все в порядке, вы точно узнаете, что будет включено. –

+0

@Mirtes, "/" будет работать, поскольку PHP будет выглядеть в нескольких разных путях для включенного файла перед сбоем. Спасибо за __DIR__, решили каждую проблему, с которой я столкнулся. – user1463822

ответ

4

A / В начале пути указывается корневой каталог. Это называется абсолютным путем. Все остальное относится к текущей папке. Это называется относительным путем.

IBM описывает различия here:

Абсолютное имя пути представляет собой полное имя файла или каталога с/(корневой) каталог вниз. Независимо от того, где вы работаете в файловой системе, вы всегда можете найти каталог или файл, указав его абсолютное имя пути. Абсолютные имена путей начинаются с косой черты (/), символа, представляющего корневой каталог. Имя пути/A/D/9 является абсолютным именем пути 9. Первая косая черта (/) представляет каталог/(root), который является исходным местом для поиска. Остальная часть имени пути направляет поиск в A, затем в D и, наконец, на 9.

В отличие от полных имен путей относительные имена путей определяют каталог или файл на основе текущего рабочего каталога. Для относительных имен путей вы можете использовать точку точечной записи (..) для перемещения вверх в иерархии файловой системы. Точечная точка (..) представляет родительский каталог. Поскольку относительные имена путей указывают путь, начинающийся в текущем каталоге, они не начинаются с косой черты (/). Имена относительных путей используются для указания имени файла в текущем каталоге или имени пути к файлу или каталогу выше или ниже уровня текущего каталога в файловой системе. Если D является текущим каталогом, относительным именем пути для доступа к 10 является F/10. Однако абсолютное имя пути всегда/A/D/F/10. Кроме того, относительное имя пути для доступа к 3 - это ../../B/3.

Представьте, что вы используете эту структуру, например, и работали в MyScript.php:

Home 
    -- Foo 
    -- Example.php 
    -- Bar 
    -- Scripts 
     -- MyScript.php 

Если вы хотите включить Example.php из папки Foo, вы можете либо указать:

../../Foo/Example.php /* Relative path: ..Bar/..Home (Root)/Foo/Example.php */ 

Или:

/Foo/Example.php /* Absolute path: Home (Root)/Foo.Example.php */ 
14

/.. - это путь относительно корня сервера.
../ - это путь к текущей папке сценария.

Я вижу запрос на получение дополнительной информации.

Если вы находитесь в папке на сервере, скажет:

/usr/local/apache2/www/example.php

Тогда ссылка в example.php может быть сделана как абсолют путь по отношению к корню сервера: /usr/local/apache2/hidden/credentials.php

Или же файл может быть достигнут с использованием пути относительно текущего файла: ../hidden/credentials. PHP. Обратите внимание, что каждый набор ../ переместит вас в один каталог выше в структуре папок сервера.

+0

Красиво положил, +1. –

Смежные вопросы