Main > PHP > Относительные и абсолютные пути

Относительные и абсолютные пути

14.02.2012 0 comments » Views: 34,750

PHP

Сегодня выдалось свободное утро, не теряя времени хотелось бы раз и навсегда разобраться в переменных и функциях для работы с относительными и абсолютными путями. И конечно сделать небольшую сводную памятку. Итак поехали..

Первым на старт у нас выходит

Супер глобальный массив $_SERVER

Переменная: $_SERVER['DOCUMENT_ROOT']
Описание: Содержит путь к корневой директории сервера, если скрипт выполняется в виртуальном хосте, в данном элементе указывается путь к корневой директории виртуального хоста.
Пример: /var/www/

Переменная: $_SERVER['HTTP_HOST']
Описание: Cодержится имя сервера, которое, как правило, совпадает с доменным именем сайта, расположенного на сервере. Как правило, имя, указанное в данном параметре совпадает с именем $_SERVER[' SERVER_NAME']. В параметре приводится лишь доменное имя без названия протокола ( http:// )
Пример: www.sfield.org.ua

Переменная: $_SERVER['REMOTE_ADDR']
Описание: В этот элемент помещается IP-адрес клиента. При тестировании на локальной машине — этот адрес будет равен 127.0.0.1. Однако при тестировании в сети переменная вернёт IP-адрес клиента или последнего прокси-сервера через который клиент попал на сервер. Если клиент использует прокси-сервер узнать его IP-адрес можно при помощи переменной окружения HTTP_X_FORWARDED_FOR, значение которой можно получить при помощи функции getenv().
Пример: 192.168.0.1

Переменная: $_SERVER['SCRIPT_FILENAME']
Описание: В этот элемент помещается абсолютный путь к файлу от корня диска. Так, если сервер работает под управлением операционной системы Windows, то такой путь может выглядеть следующим образом "d:main estindex.php", т.е. путь указывается от диска, в UNIX-подобной операционной системы путь указывается от корневой директории /, например "/var/share/www/test/index.php".
Пример: /var/www/vo/test/env/index.php

Переменная: $_SERVER['SERVER_NAME']
Описание: В этот элемент помещается имя сервера, как правило, совпадающее с доменным именем сайта, расположенного на нём. Например, www.sfield.org.ua Содержимое элемента $_SERVER['SERVER_NAME'] часто совпадает с содержимым элемента $_SERVER['HTTP_HOST'].
Пример: server

Переменная: $_SERVER['SERVER_ADDR']
Описание: В этот элемент помещается ip адрес сервера.
Пример: 192.168.0.200

Переменная: $_SERVER['PHP_SELF']
Описание: В этот элемент помещается имя скрипта, начиная от корневой директории виртуального хоста, т.е. если строка запроса представляет собой адрес http://www.sfield/wp/index.php?action=edit&post=8 , то элемент $_SERVER['PHP_SELF'] будет содержать фрагмент /wp/index.php . Как правило, этот же фрагмент помещается в элемент $_SERVER['SCRIPT_NAME'].
Пример: /vo/test/env/index.php

Переменная: $_SERVER['REQUEST_URI']
Описание: В этом элементе содержит имя скрипта, начиная от корневой директории виртуального хоста и параметры, т.е. если строка запроса представляет собой адрес: http://www.sfield/wp/index.php?action=edit&post=8 то элемент $_SERVER['REQUEST_URI'] будет содержать фрагмент "/wp/index.php?action=edit&post=8". Для того, чтобы восстановить в скрипте полный адрес, который помещён в строке запроса, достаточно использовать комбинацию элементов массива $_SERVER, представленную ниже

Пример: /vo/test/env/

Более полный список переменных можно просмотреть выполнив скрипт:

Теперь рассмотрим, функции по работе с путями

Функция: string realpath ( string path )
Описание: Раскрывает все символические ссылки, переходы типа '/./', '/../' и лишние символы '/' в пути path, возвращая канонизированный абсолютный путь к файлу. В этом пути не будет символических ссылок и компонентов типа '/./' или '/../'.
Пример вызова:

Результат: /home/vo/www/index.php

Функция: string basename ( string path [, string suffix] )
Описание: Эта функция вернет имя файла, чей путь был передан в качестве параметра. Если имя файла оканчивается на suffix, он также будет отброшен. На платформах Windows в качестве разделителей имен директорий используются оба слэша (прямой / и обратный \). В других операционных системах разделителем служит прямой слэш (/).
Пример вызова:

Результат:
index.php
index
index

Функция: string dirname ( string path )
Описание: Данная функция возвращает имя каталога, содержащегося в параметре path. На платформах Windows в качестве разделителей имен директорий используются оба слэша (прямой / и обратный \). В других операционных системах разделителем служит прямой слэш (/).
Пример вызова:

Результат:
/home/httpd/html
http://yandex.ru

Функция: array pathinfo ( string path [, int options] )
Описание: Возвращает ассоциативный массив, который содержит информацию о пути path. Возвращаемый массив состоит из следующих элементов: dirname, basename и extension. Вы можете указать, какие элементы будут возвращены при помощи необязательного параметра options. Он состоит из PATHINFO_DIRNAME, PATHINFO_BASENAME и PATHINFO_EXTENSION. По умолчанию возвращаются все элементы.
Пример вызова:

Результат:
/www/htdocs
index.html
html

Пример использования, правильное определение путей к классам:

К примеру мы все файлы с классами, складываем в папку /www/classes/, а все подключаемые файлы храним в /www/include/some_dir/
Тогда нам разумно было бы, чтобы не писать пути нигде в подключаемых файлах, переопределить константу Апача include_path
Для этого используем такую конструкцию в /www/config.php

Теперь из любого места, мы можем вызвать класс, не используя путь к нему.

Например, следующие вызовы будут одинаково корректны:

классы находятся по путям /www/classes/cMyClass.php и /www/classes/foreign/cMyClass.php
файл /www/index.php

файл /www/include/modules/foreign/out.php

Вот и всё 🙂

Author: | Rating: 5/5 | Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>