Абсолютный путь к папке на уровень выше

115
28 июля 2019, 15:00

Есть главная папка с проектом в которой находится папка конфига, в конфиге есть php файл, в котором я ищу абсолютный путь к этой папке так:

define('CONFIG_ROOT', str_replace(DIRECTORY_SEPARATOR, '/', getcwd()));

Как я могу используя такой подход найти путь к папке, которая на уровень выше?

спасибо!

Answer 1

На самом деле путь вида /home/www/site/html/../file.php является вполне себе абсолютным. Поскольку строится от корня диска. Соответственно, нет проблемы воспользоваться советом из комментария и добавить '/..' к любому пути, чтобы получить путь к папке на уровень выше. Если к наличию элемента .. в пути есть претензии эстетического плана, то есть функция realpath() которая служит для превращения пути с точками в канонический абсолютный путь.

Но более красивым будет другой вариант, функция dirname(), которая попросту отнимает от текущей строки вида /one/two/three последний элемент. То есть делает ровно то, что требуется - возвращает путь к каталогу на один уровень выше.

Отдельно хочу заметить, что использованный в вопросе код довольно странный, и может привести к непредсказуемым результатам. Так что я бы получал путь к текущему файлу через константу __DIR__, а путь к папке выше, соответственно -

define('CONFIG_ROOT', __DIR__);
define('UPPER_DIR', dirname(CONFIG_ROOT));

каковой код и можно рекомендовать в качестве ответа на вопрос

READ ALSO
парсинг с библиотекой Simple HTML DOM

парсинг с библиотекой Simple HTML DOM

в парсере есть функция file_get_html, если в нее передать адрес

139
Получение данных из google spreadsheet (php)

Получение данных из google spreadsheet (php)

Нужно получить выборку данных из гугл таблицы по дате, все даты расположены в порядке убывания в одной колонке

119
Ошибка cannot open source file “stdafx.h”

Ошибка cannot open source file “stdafx.h”

Мне достались исходники небольшого проекта из нескольких файловПри открытии его в visual studio еще до начала компиляции в редакторе кода в каждом...

148
sregex_iterator не находит соответствий на строке

sregex_iterator не находит соответствий на строке

У меня есть строка - html код, который нужно распарсить с помощью регулярных выражений regexМне нужно записать в вектор std::vector все URL'ы на странице,...

158