返回安装脚本的URL

时间:2013-08-25 07:22:34

标签: php

我需要动态地找出脚本的基本URL。 假设我已经在文件夹脚本中安装了一个脚本,脚本的基本URL就是 http://www.domain.com/script,让我说我将它放在根目录中http://www.domain.com

有没有办法动态地找到它?

使用basename(__DIR__),basename(__FILE__)getcwd()不会给我带来希望的结果。

尝试类似于echo $_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']);的内容 但是这个ofc总是会返回当前页面的网址。

我想在index.php中声明一个名为ROOT_URL的常量(一切都被这个文件加载),所以我可以在任何希望的项目中使用这个常量。

希望有人可以帮助我。

谢谢!

3 个答案:

答案 0 :(得分:1)

几周前我在MVC实施中不得不报道同样的问题。

你去了:

public static function RealDirname($path)
{
    $path = dirname($path);

    if($path[0] == '\\') //Windows servers tend to mess up
        $path[0] = '/';

    $lastChar = strlen($path) - 1;
    if($path[$lastChar] != '/')
        $path .= '/';

    return $path;
}

public static function GetAbsolutePath()
{
            global $config;

    if(empty($config["base_path"]))
        $config["base_path"] = self::GetDomainURL();

    return $config["base_path"].(self::RealDirname($_SERVER['PHP_SELF']));
}

public static function GetDomainURL()
{
    return (isset($_SERVER['HTTPS']) ? 'https://' :'http://').$_SERVER['HTTP_HOST'];
}

只需调用getAbsolutePath,这应该返回带有URL的整个路径:)

在位于:

的页面上进行了尝试
http://localhost:8080/old/test.php

GetAbsolutePath返回:

http://localhost:8080/old/

和GetDomainURL:

http://localhost:8080

答案 1 :(得分:0)

你试过$script_filename = $_SERVER['SCRIPT_FILENAME']; 您可以在这里查看http://php.net/manual/en/reserved.variables.server.php

答案 2 :(得分:0)

在Anthony的帮助下解决了这个问题

改变了他的第一个提交方法:

  public static function RealDirname($path)
{
    $path = dirname($path);

    if($path[0] == '\\') //Windows servers tend to mess up [everything]
        $path[0] = '/';

    $lastChar = strlen($path) - 1;
    if($path[$lastChar] != '/')
        $path .= '/';

    return $path;
}

public static function getAbsolutePath()
{
        $path = (isset($_SERVER['HTTPS']) ? 'https://' :'http://').$_SERVER['HTTP_HOST'];
        $path = $path.self::RealDirname($_SERVER['PHP_SELF']);
        return substr($path, 0, strpos($path, "index.php"));

}  

在index.php之后删除所有内容并让我回到根目录。