PHP: получить абсолютный путь от абсолютного URL


У меня есть абсолютный путь к файлу, есть ли способ получить абсолютный путь к файлу

http://domainname/rootfolder/filename.php

И я хочу получить что-то вроде

/дома/имя_домена/public_html/имя_папки/имя_файла.php

4 5

4 ответа:

Вы можете использовать функцию parse_url , чтобы получить локальную часть URL.

Преобразование этого в путь к файлу требует, чтобы вы знали, где находится корень документа веб-сервера. Если это тот же сервер, на котором работает страница, то вы обычно можете получить его от $_SERVER['DOCUMENT_ROOT'].

Это также зависит от того, что ничто не мешает URL-адресу не быть прямым отображением на файловую систему (например, mod_rewrite, mod_alias, URI, маршрутизируемые через MVC рамки и т. д.). Например, для системы, над которой я работаю в данный момент, если вы нажмете http://example.com/blog/2012/01/01/ тогда задействованные файлы будут /home/user/recall/script/recall.psgi и /главная/пользователя/отзыв/корень/блог/день.ТТ, но DocumentRoot так будет /главная/пользователя/отзыв/htdocs в/)

Это самый простой способ:

$path = parse_url('http://domainname/rootfolder/filename.php', PHP_URL_PATH);

//To get the dir, use: dirname($path)

echo $_SERVER['DOCUMENT_ROOT'] . $path;

Это выведет вам полный путь.

Документация:

Parse_url

DOCUMENT_ROOT

Dirname

Попробуйте $_SERVER['DOCUMENT_ROOT']. Предполагая URL, как

http://example.com/subfolder/somefile.html

И фактическое расположение файла на сервере является

/home/sites/example.com/html/subfolder/somefile.html
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--- $_SERVER['DOCUMENT_ROOT']

Попробуйте

$filepath = $_SERVER['DOCUMENT_ROOT'].'/rootfolder/filename.php'

Это может помочь вам.