Php 在dev和prod中获取网站根目录,无需硬编码

Php 在dev和prod中获取网站根目录,无需硬编码,php,Php,我的开发服务器是http://localhost/mygreatapp而我的生产服务器是http://www.myawesomesite.com但也许有一天它会迁移到http://www.myawesomesite.com/mygreatapp 在这些情况下,mygreatapp是一个虚拟目录 我希望php函数能够返回正确的网站根目录,而无需硬编码任何内容(例如,mygreatapp),无论它是脱离默认网站还是虚拟目录。在这两种情况下,文件的所有相对路径都从这里开始 我已经研究过类似的问题,但没

我的开发服务器是
http://localhost/mygreatapp
而我的生产服务器是
http://www.myawesomesite.com
但也许有一天它会迁移到
http://www.myawesomesite.com/mygreatapp

在这些情况下,
mygreatapp
是一个虚拟目录

我希望php函数能够返回正确的网站根目录,而无需硬编码任何内容(例如,
mygreatapp
),无论它是脱离默认网站还是虚拟目录。在这两种情况下,文件的所有相对路径都从这里开始


我已经研究过类似的问题,但没有找到一个不涉及硬编码的解决方案,这将涉及到必须更新每个环境的值,这很痛苦而且容易出错。

这将暂时解决我的问题,但是如果我进入linux机器上的子文件夹,我需要调整它

public static function WebRoot(){
        $virtualdir = '';
        if(isset($_SERVER['APPL_MD_PATH'])){
            $virtualdir = substr($_SERVER['APPL_MD_PATH'], strpos($_SERVER['APPL_MD_PATH'], '/ROOT/') + strlen('/ROOT/'));
        }
        return 'https://'.$_SERVER['SERVER_NAME'].'/'.$virtualdir.'/';
}

你没有解释上下文。类似于@LucasHolt的东西,请参阅我的编辑,也许你可以撤销你的downvoteWell。听起来你假设PHP的工作方式类似于ASP.net或者tomcat实例。不是这样的。通常PHP在unix系统上映射一个while域。我猜你用的是IIS术语。PHP应用程序并非如此。它更像是为具有给定文件扩展名的文件映射的脚本解释器。它实际上没有web根的概念。这就是我建议从环境变量中获取值的原因。@LucasHolt,我想我可以使用
realpath
来获取我想要的,基于我对我的网站结构的了解,它在不同环境之间不会改变。