(PHP 4, PHP 5, PHP 7, PHP 8)
realpath — Возвращает канонизированный абсолютный путь к файлу
Функция realpath() разворачивает символические ссылки,
а также разрешает ссылки на относительные пути вида /./
, /../
и лишние символы /
во входном пути path
,
а затем возвращает канонизированный абсолютный путь к файлу.
path
Проверяемый путь.
Замечание:
Параметр пути хотя и обязательный, но принимает пустую строку. Тогда функция интерпретирует значение как текущий каталог.
Функция возвращает канонизированный абсолютный путь к файлу в случае успешного выполнения.
Результирующий путь не будет содержать символической ссылки и компонентов
/./
или /../
.
Функци также удалит разделители \
и /
в конце пути.
Функция realpath() возвращает false
, если возникла ошибка, например,
если файл не существует.
Замечание:
Для скрипта, который запустили, требуются права на выполнение на каждом каталоге в иерархии, иначе функция realpath() вернёт
false
.
Замечание:
В регистронезависимых файловых системах функция realpath() нормализует или не нормализует регистр символов.
Замечание:
Функция realpath() не будет работать с файлом внутри Phar-архива, поскольку такой путь будет виртуальным, а не реальным.
Замечание:
В ОС Windows точки соединения и символические ссылки на каталоги разворачиваются только на один уровень.
Замечание: На 32-разрядных платформах отдельные PHP-функции для работы с файловой системой иногда возвращают неожиданные результаты для файлов размером больше 2 ГБ, поскольку в PHP тип integer хранит числа со знаком, а архитектура платформы ограничивает диапазон положительных значений типа.
Пример #1 Пример использования функции realpath()
<?php
chdir('/var/www/');
echo realpath('./../../etc/passwd') . PHP_EOL;
echo realpath('/tmp/') . PHP_EOL;
?>
Результат выполнения приведённого примера:
/etc/passwd /tmp
Пример #2 Пример работы функции realpath() в ОС Windows
В системах Windows функция realpath() изменит пути в стиле Unix на стиль Windows.
<?php
echo realpath('/windows/system32'), PHP_EOL;
echo realpath('C:\Program Files\\'), PHP_EOL;
?>
Результат выполнения приведённого примера:
C:\WINDOWS\System32 C:\Program Files