如何为CMS的MySQL凭据设置不同的服务器环境

时间:2013-11-22 20:53:28

标签: php mysql content-management-system concrete5

我们有一个本地MAMP环境以及开发和生产服务器,它们都使用不同的MySQL凭据。

我们正在尝试在CMS的config.php文件中设置一个语句,该文件根据环境使用正确的凭据。

我们目前的陈述如下:

<?php
  if ($_SERVER['HTTP_HOST'] == 'domain.com') { // PRODUCTION Server
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', 'db-user');
    define('DB_PASSWORD', 'db-password');
    define('DB_DATABASE', 'db-name');
      } else if ($_SERVER['HTTP_HOST'] == 'domain.devserver.com') { // DEV Server
        define('DB_SERVER', 'localhost');
        define('DB_USERNAME', 'db-user');
        define('DB_PASSWORD', 'db-password');
        define('DB_DATABASE', 'db-name');
      } else { // MAMP
        define('DB_SERVER', 'localhost');
        define('DB_USERNAME', 'db-user');
        define('DB_PASSWORD', 'db-password');
        define('DB_DATABASE', 'db-name');
      }
?>

但是只使用了最后一组凭证(MAMP) - 有没有办法在单个php文件中执行此操作?

我们发现的其他内容涉及使用多个不同的文件并设置环境变量,但我们希望将其全部保存在一个文件中,或者至少在每个客户端的网站中,如果有意义的话。

我们知道很少的PHP - 任何有关正确方向的帮助或指示都会非常感激。

干杯

2 个答案:

答案 0 :(得分:0)

我上面的代码没有看到任何问题,但是开关可能会使其正常运行。

switch ($_SERVER['HTTP_HOST']) {
case "domain.com":
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', 'db-user');
    define('DB_PASSWORD', 'db-password');
    define('DB_DATABASE', 'db-name');
    break;
case "domain.devserver.com":
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', 'db-user');
    define('DB_PASSWORD', 'db-password');
    define('DB_DATABASE', 'db-name');
    break;
default:
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', 'db-user');
    define('DB_PASSWORD', 'db-password');
    define('DB_DATABASE', 'db-name');
    break;
}

答案 1 :(得分:0)

我们写了一篇博文,解释了我们解决这个问题的方法: http://concrete5tricks.com/blog/dev-stage-prod-same-config/