PHP:从绝对URL获取绝对路径

时间:2012-09-03 06:04:26

标签: php path absolute

我有一个文件的绝对路径,有没有办法获取文件的绝对路径

http://domainname/rootfolder/filename.php

我希望得到像

这样的东西

/home/domainname/public_html/foldername/filename.php

5 个答案:

答案 0 :(得分:17)

这是最简单的方法:

$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

答案 1 :(得分:9)

您可以使用the parse_url function获取网址的本地部分。

将其转换为文件路径,然后要求您知道Web服务器的文档根目录的位置。如果它与运行页面的服务器相同,那么您通常可以从$_SERVER['DOCUMENT_ROOT']获取该服务器。

它还取决于没有任何东西阻止URL不是直接映射到文件系统(例如mod_rewrite,mod_alias,通过MVC框架路由的URI等)。例如,对于我目前正在处理的系统,如果您要点击 http://example.com/blog/2012/01/01/ ,那么涉及的文件将是< em> /home/user/recall/script/recall.psgi 和 /home/user/recall/root/blog/day.tt 但是DocumentRoot将是 / home /用户/召回/ htdocs中/

答案 2 :(得分:0)

试试$_SERVER['DOCUMENT_ROOT']。假设有一个像

这样的网址
http://example.com/subfolder/somefile.html

并且文件在服务器上的实际位置为

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

答案 3 :(得分:0)

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

这可能会对你有帮助。

答案 4 :(得分:0)

我发现这可以可靠地工作:

function get_file_path_from_url( $file_url ){
   return realpath($_SERVER['DOCUMENT_ROOT'] . parse_url( $file_url, PHP_URL_PATH ));
}