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

PHP:从绝对URL获取绝对路径,php,path,absolute,Php,Path,Absolute,我有一个文件的绝对路径,有没有办法得到文件的绝对路径 http://domainname/rootfolder/filename.php 我想得到像这样的东西 /home/domainname/public\u html/foldername/filename.php试试$\u服务器['DOCUMENT\u ROOT']。假设URL为 http://example.com/subfolder/somefile.html 以及文件在正在运行的服务器上的实际位置 /home/sites/exam

我有一个文件的绝对路径,有没有办法得到文件的绝对路径

http://domainname/rootfolder/filename.php
我想得到像这样的东西


/home/domainname/public\u html/foldername/filename.php

试试
$\u服务器['DOCUMENT\u ROOT']
。假设URL为

http://example.com/subfolder/somefile.html
以及文件在正在运行的服务器上的实际位置

/home/sites/example.com/html/subfolder/somefile.html
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--- $_SERVER['DOCUMENT_ROOT']
您可以使用获取URL的本地部分

然后,将其转换为文件路径需要知道Web服务器的文档根所在的位置。如果它与运行页面的服务器是同一台服务器,则通常可以从中获取


这还取决于没有任何东西可以阻止URL不直接映射到文件系统(例如mod_rewrite、mod_别名、通过MVC框架路由的URI等)。例如,对于我目前正在开发的系统,如果您要点击http://example.com/blog/2012/01/01/ 然后涉及的文件将是/home/user/recall/script/recall.psgi和/home/user/recall/root/blog/day.tt,但文档根将是/home/user/recall/htdocs/)

这是最简单的方法:

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

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

echo $_SERVER['DOCUMENT_ROOT'] . $path;
这将为您打印完整路径

文件:

试试看

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

这可能会对您有所帮助。

我发现它工作可靠:

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

您确定没有在示例中混淆
rootfolder
foldername
?您如何同时拥有和不拥有绝对路径?您应该检查dirname()、realpath()函数和文件常量…dirname()和realpath要求脚本和路径应该在同一台服务器上,但我在不同的服务器上有zerkms,它们是相同的东西,我的意思是foldername或Dirname我的脚本位于不同的服务器上,路径不同。当您需要知道服务器是如何配置的,然后才能计算URI解析到其文件系统上的位置。我的脚本位于不同的服务器上,路径也不同。当您需要知道文档根是什么时。标准http请求不会显示此类数据。这不适用于user_dir路径,其中/~user/。。。映射到用户主目录中的某个内容。在这种情况下,您必须使用
$\u SERVER['CONTEXT\u DOCUMENT\u ROOT']
并从url中删除
~user
部分。