php获取当前文件目录的URL

时间:2018-08-10 15:20:08

标签: php

对您来说可能是一个简单的问题,但我对此不屑一顾。

我有一个php文件,需要知道它的当前目录url才能链接到与其自身相关的内容。

例如,目前我知道要获取当前目录路径而不是url。当我使用它时,我得到了路径:

realpath(__DIR__)

结果:

/Applications/MAMP/htdocs/mysite/dir1/dir2/dir3

但这将是我想要的结果:

http://localhost:8888/dir1/dir2/dir3

请注意,这不是当前页面的位置。该页面从“ http://localhost:8888/dir1/dir2/dir3/myfile.php”中调用文件 而“ myfile.php”具有上面的脚本。

-编辑以详细说明- 感谢您的回答。但我知道我需要添加更多细节。

4 个答案:

答案 0 :(得分:3)

使用echo $_SERVER['PHP_SELF'];

例如,如果URL为http://localhost/~andy/test.php

输出为:

/~andy/test.php

足以生成一个相对URL。

如果要使用目录,则当前脚本在以下目录中运行-没有文件名-使用:

echo dirname($_SERVER['PHP_SELF']);

在上述情况下,您将获得/~andy(末尾没有test.php)。参见http://php.net/manual/en/function.dirname.php

请注意,根据您的问题,echo getcwd(); 不是您想要的。这样可以为您提供脚本运行所在的文件系统/服务器(而不是URL)的位置。脚本位于服务器文件系统上的目录以及URL是2个完全不同的东西。

还有一个函数可以解析PHP内置的URL:http://php.net/manual/en/function.parse-url.php

答案 1 :(得分:1)

我在这里找到了解决方案: https://stackoverflow.com/a/1240574/7295693

这是我现在要使用的代码:

function get_current_file_url($Protocol='http://') {
   return $Protocol.$_SERVER['HTTP_HOST'].str_replace($_SERVER['DOCUMENT_ROOT'], '', realpath(__DIR__)); 
}

答案 2 :(得分:0)

如果您的网址是这样的:https://localhost.com/this/is/a/url

$_SERVER['DOCUMENT_ROOT'] -提供系统路径 [/ var / www / html / this / is / a / url]

$_SERVER['PHP_SELF'] -给出当前文件的路径(在域名之后) [/ this / is / a / url]

$_SERVER['SERVER_NAME'] -给出域名 [localhost.com]

$_SERVER['HTTP_REFERER'] -提供正确的HTTP(S)协议和域名。 [{https://localhost.com]

如果您想获取完整的URL,可以执行以下操作:

echo $_SERVER['HTTP_REFERER'] . $_SERVER['PHP_SELF'];

但是,我确实相信在这种情况下,您只需要相对路径即可。在这种情况下,您只需要使用$_SERVER['PHP_SELF'];

答案 3 :(得分:0)

根据您的问题,我相信这会为您带来想要的东西:

$_SERVER['HTTP_HOST'] . substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], "/"));

参考:

  • $_SERVER['HTTP_HOST']-您的情况将返回: http:// localhost:8888
  • $_SERVER['REQUEST_URI']-您的情况将返回: /dir1/dir2/dir3/myfile.php

使用添加的substr()strrpos()方法,您可以剥离_myfile.php`以获得所需的结果:

http:// localhost:8888 / dir1 / dir2 / dir3