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的映射。虚拟目

不管包含哪个文件,是否仍然可以在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的文件系统路径
,那么请使用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。
说得很简单。不是吗?