1

我有一个在 localhost 中运行的站点作为开发环境,并在服务器中用于生产。

每次我必须更新服务器中的更改时,我和两者之间的某些配置文件存在一些差异,我必须小心不要覆盖某些不同的文件。

我希望能够通过为每个环境创建一个具有正确配置的文件来简化此过程。

我需要读取当前在此配置文件中的该文件:

  • 应用程序/配置/email.php
  • 应用程序/配置/routes.php

理想情况下,如果可能的话:

  • 应用程序/供应商/供应商名称/供应商文件.php

有可能吗?

我曾尝试使用 Configure::read 和 Configure::write,但似乎无法在电子邮件设置(例如public $smtp路由文件)中完成。

谢谢。

4

2 回答 2

2

路由文件只是一个调用路由器的 php 文件。您可以非常简单地将其拆分为多个文件并自己加载它们:

app/Config/
  routes.php
  routes_dev.php
  routes_production.php

routes.php然后将加载正确的路由文件。

<?php
if ($env == 'dev') {
  include 'routes_dev.php';
} else {
  include 'routes_production.php';
}

电子邮件配置也只是一个 php 文件。您可以编写一个函数来根据环境设置正确的默认配置。

class EmailConfig {

  public function __construct() {
    if ($env == 'dev') {
      $this->default = $this->dev;
    }
  }

  public $default = array(
      'host' => 'mail.example.com',
      'transport' => 'Smtp'
  );

  public $dev = array(
      'host' => 'mail2.example.com',
      'transport' => 'Smtp'
  );

}

至于供应商文件,则视具体情况而定。

如果您有一个部署系统,最好为每个环境实际拥有单独的文件(甚至可能是一个完整的配置目录)并在部署构建完成后重命名它们,从而使 Cake 和您的代码更加明智。

于 2013-01-15T16:16:08.263 回答
0

我过去处理这种情况的方法是将环境变量添加到 apache 虚拟主机配置中。

SetEnv cake_apps_path /var/www/apps/
SetEnv cake_libs_path /var/www/libs/

这让我可以拉 $_SERVER['cake_apps_path'] 和 $_SERVER['cake_libs_path']。然后每个开发人员都可以在自己的虚拟主机配置中设置自己的变量,然后将其添加到服务器的虚拟主机配置中,就完成了。每个开发人员都可以有自己的路径。

于 2013-01-15T16:48:28.260 回答