【发布时间】:2014-08-21 12:44:17
【问题描述】:
我最近一直在尝试改进我的开发/实时工作流程,以实现 1:1 对等。我希望一切在 Dev(我的本地机器)上都能像在现场(Web)上一样工作。除了拥有不同的配置文件(包含不同的 mySQL 凭据)和不同的 .htaccess 文件之外,我希望站点的其余部分在我的实时环境中的工作方式与在我的开发环境中的工作方式完全相同。 问题是我无法让我的包含路径在两个环境中以相同的方式解决。
我的所有包含都配置为这种格式:
包含路径
$_SERVER["DOCUMENT_ROOT"] . /website1/includes/file.php
问题是在我的 LIVE 服务器上,$_SERVER["DOCUMENT_ROOT"] 不包含 /website1/ 部分,但在我的 TEST 服务器上,它包含。这意味着路径在两种环境中的解析方式不同:
直播:
/some/root/folder/website1/includes/file.php
开发人员:
/some/root/folder/website1/website1/includes/file.php
我已经通过将包含的文件复制到名为 /website1 的子文件夹中以在 MAMP 开发环境中使用来解决这个问题。但这显然并不理想,因为它增加了不必要的开销。每当我编辑其中一个包含的文件时,我必须确保在两个位置都编辑该文件。
有没有人有任何建议让两个环境中的包含路径相同,没有重复的文件?我曾尝试使用dirname(__FILE__),但这需要进行大量更改才能解析相对路径。我尝试了各种其他解决方案,例如尝试通过 .htaccess、httpd.conf 或 php.ini 更改包含路径,但似乎没有任何效果。我知道必须有一个简单的解决方案,但我迷路了。理想情况下,我希望对本地环境进行任何配置更改,以避免篡改实时环境。
非常感谢!
【问题讨论】:
-
为什么不在配置文件中设置 $root_path 并在应用程序的任何地方使用它?
-
配置文件也是通过include拉进来的。
-
$some_root_folder 实际上意味着 $_SERVER["DOCUMENT_ROOT"] 在两个环境中不是同一路径
-
为清晰起见已更新。谢谢!
-
您确定要在两个环境中部署具有相同文件夹层次结构的代码吗?