PHP文件的真实URI?
不管包含哪个文件,是否仍然可以在PHP中获取文件的当前URI 例如:PHP文件的真实URI?,php,uri,Php,Uri,不管包含哪个文件,是否仍然可以在PHP中获取文件的当前URI 例如: a.php包含在b.php <?php include('./lib/utils.php'); blah(); <?php function blah(){ } 但是我想获取a.php所在目录的URI。您可以使用realpath(\uuuu FILE\uuuu)获取文件系统中的目录。您应该能够将其转换为URI 文件没有“真实”的URL,因为这意味着URL和文件之间存在1:1的映射。虚拟目
a.php
包含在b.php
<?php
include('./lib/utils.php');
blah();
<?php
function blah(){
}
但是我想获取a.php
所在目录的URI。您可以使用realpath(\uuuu FILE\uuuu)
获取文件系统中的目录。您应该能够将其转换为URI
文件没有“真实”的URL,因为这意味着URL和文件之间存在1:1的映射。虚拟目录允许文件具有许多不同的名称
但是,如果您只需要
a.php的文件系统路径
,那么请使用Johan在评论部分的回答尝试\uuuuuu DIR\uuuuu
,我们有:这个答案在很大程度上取决于你的目录结构,请确保你的最后一个文件夹,导致你的www根爆炸!这可能是“htdocs”或“public_html”,具体取决于您的主机
$my_domain = $_SERVER['HTTP_HOST'];
$this_uri_dir = explode('public_html', dirname(__FILE__)); //this assumes you don't have multiple folders named 'public_html'
echo 'http://'.$my_domain.$this_uri_dir[1].'/';
当前URI通常可以由
$\u服务器['HTTPS']
、$\u服务器['SERVER\u NAME']
和$\u服务器['REQUEST\u URI']
组成(哈希标识符\foo
除外,它甚至没有发送到服务器)
您可以找到进一步的参考,但通常使用$\u服务器
数组更容易
澄清:一个文件可以有一个URL,多个或根本没有。文件和URL之间不一定存在1对1的映射
如果我们有此文件布局:
/home/foo/htdocs/foo.php
<?php include('./lib/utils.php'); blah();
<?php function blah(){ }
/home/foo/htdocs
是文档根目录时,获取utils.php
所在目录的URL的方法是从utils.php
中读取\uuuuu文件
,并用站点的协议和路径替换前导的$\u服务器['document\u root']
。例如:
<?php
if( isset($_SERVER['DOCUMENT_ROOT']) ){
$directory = realpath(dirname(__FILE__));
$document_root = realpath($_SERVER['DOCUMENT_ROOT']);
$base_url = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' ? 'https' : 'http' ) . '://' .
$_SERVER['SERVER_NAME'];
if( strpos($directory, $document_root)===0 ){
echo $base_url . str_replace(DIRECTORY_SEPARATOR, '/', substr($directory, strlen($document_root)));
}
}
您可以使用dirname(\u uuuuu文件\uuuu);要获取a.php的服务器路径,您需要将其与文档根匹配,并添加$服务器[server\u NAME]以获取实际的URI。我会给你打一个完整的答案,但我用的是iphone;)不过还是忍不住回答!谢谢你,约翰!我希望我能把这个标记为正确答案哈哈:)你在说什么?你是说文件系统路径?你为什么需要它?@schrapnel上校,不,我是说这个http://example.com/a.php_directory/
@Mohammad那是胡说八道。包含的文件目录对您没有任何帮助。你为什么需要这个a.php_目录?你把realpath和dirname弄混了<代码>\uuuu文件\uuuu
已包含真实的path@Col.弹片-这不是我从问题中推断的。我建议您提供自己的答案。a.php包含在b.php中。我想获取a.php所在目录的URI。
说得很简单。不是吗?