如何处理在html网站中更改DOCUMENT_ROOT


how to deal with changing DOCUMENT_ROOT in an html website

我是一名网络开发新手,我正在努力学习最佳实践。我在本地Apache服务器上使用Dreamweaver编写代码并运行我的网站;然后我远程部署它,并在那里进行测试。我使用我的网站(html,php和一些js)。

自从我开始这项工作以来,我一直面临着一个问题,我不知道有什么好的做法可以解决它

DOCUMENT_ROOT是一个更改的php变量;在本地,它指向examplep/htdocs(而不是我实际的网站根examplep/htdocs/myWebsite),在远程,它指向我实际的文档根。

因此,由于上述原因,我现在无法使用它,所以我最终在远程服务器上使用绝对路径定位文件。

有什么好的做法可以避免这种情况吗?

PS:

  • 我知道我可以更改php.ini配置文件来更改DOCUMENT_ROOT指向的位置,但我也不想要。。

  • 此外,我不能硬编码相对路径(正如评论员所建议的),因为我有一个从不同目录运行的脚本。。。所以我不能硬编码那里的相对路径

另一种方法。创建一个配置文件,确定站点是在本地站点上运行还是在活动站点上运行,然后在每个页面上包含该配置文件。您还可以通过这种方式为每个设置错误报告和数据库连接等设置。

//Determine if Server is local system or live site
    if(stristr($_SERVER['HTTP_HOST'],'local')||(substr($_SERVER['HTTP_HOST'],0,7)=='192.168')){
        $local=TRUE;
    }
    else {
        $local=FALSE;
    }
if($local){
    define('BASE_URL','http://localhost/localsite/');
    define('BASE_URI','C:/localserver/htdocs/localsite/');
}
else{
    define('BASE_URL','http://www.example.com/');
    define('BASE_URI','server/directory/pathToRoot/');
    }

然后,您可以使用php页面中定义的常量来定义路径。例如:

include(BASE_URI.'directory/filename.php');
<a href="<?php echo BASE_URL;?>directory/filename.html">Some Link</a>

它将在每次部署中正确工作。