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

时间:2013-06-23 06:02:32

标签: php html

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

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

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

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

有没有好的做法可以避免这种情况?

PS:

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

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

1 个答案:

答案 0 :(得分:2)

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

//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>

它将在每次部署时正常工作。