У меня есть этот URL на localhost: http://localhost:7777/somesite/sites/default/files/devel-7.x-1.5.zip
и хочу получить c:\xampp\htdocs\somesites\default\files\devel-7.x-1.5.zip
,
Как уже упоминалось по этому вопросу PHP: получить абсолютный путь из абсолютного URL:
$path = parse_url($url, PHP_URL_PATH);
echo $_SERVER['DOCUMENT_ROOT'] . $path;
Приведенный выше фрагмент кода должен позволить мне получить фактический путь к файлу. К сожалению, это не работает. При печати $path
это возвращает $url
вместо somesites\default\files
, Может ли это быть, потому что я бегу на localhost:7777
?
Вы можете сделать это с помощью серверных переменных:
echo $_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
Это может быть вызвано тем, что правильный адрес не передается в функцию parse_url. Напечатайте значение $ url перед передачей в функцию parse_url и проверьте, печатает ли оно соответствующее значение. Вы можете передавать что-то вроде этого Http: // Http: // локальный: 7777 / HTTP: // локальный: 7777 / somesite / сайты / по умолчанию / файлы / devel-7.x-1.5.zip в $ url, из-за чего, когда parse_url обрабатывает $ url, он возвращает ваш исходный $ url.
Надеюсь это поможет 🙂
Пытаться
$path = parse_url($url);
echo str_replace('/', "\\", $_SERVER['DOCUMENT_ROOT'].$path['host'].$path['path']);