对你来说可能是个简单的问题,但我正在为这个问题绞尽脑汁。
我有一个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”具有上面的脚本。
**--编辑以详细说明更多细节--**感谢您的回答。但我知道我需要添加更多细节。
- http://localhost:8888/index.php调用:“http://localhost:8888/dir1/dir2/dir3/myfile.php“
- “myfile.php”需要知道它在宇宙中的位置:)“我在哪里”
- “myfile.php”应该知道它的url位置是“http://localhost:8888/dir1/dir2/dir3/“
5条答案
按热度按时间ymdaylpp1#
使用
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是完全不同的两件事。还有一个函数可以解析PHP中内置的URL:http://php.net/manual/en/function.parse-url.php
yxyvkwin2#
如果你的URL是这样的:
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(https://localhost.com]) *如果你想得到完整的url,你可以做如下操作:
一个月五个月一个月
然而,我相信在这种情况下,你所需要的只是相对路径..在这种情况下,你应该只需要使用
$_SERVER['PHP_SELF'];
gdx19jrr3#
我在这里找到了一个解决方案:https://stackoverflow.com/a/1240574/7295693
这是我现在要使用的代码:
t1qtbnec4#
根据你的问题,我相信这会让你得到你想要的:
参考:
$_SERVER['HTTP_HOST']
-在您的情况下,这将返回:http://localhost:8888$_SERVER['REQUEST_URI']
-在您的情况下,这将返回:/dir1/dir2/dir3/myfile.php使用添加的
substr()
和strrpos()
方法,您可以剥离末尾的_myfile.php`以获得所需的结果:68de4m5k5#
您可以使用此代码定位内部项目目录