我是一名网络开发新手,我正在努力学习最佳实践。我在本地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>
它将在每次部署中正确工作。