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

问题描述:

我们有一个本地MAMP环境以及所有使用不同MySQL凭证的开发和生产服务器。如何为CMS的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'); 
     } 
?> 

但只有最后一组凭据(毫安)的不断被使用 - 有没有办法在一个单一的PHP文件来做到这一点?

我们发现

其他的东西涉及使用几个不同的文件和设置环境变量,但我们想保持它所有在一个文件中或至少在每一个客户的网站,如果这是很有意义的。

,我们所知甚少的PHP - 任何帮助或指针在正确的方向,将不胜感激。

干杯

+0

这是非常基本的PHP。 “怪异问题”没有太多空间。很明显,HTTP_HOST变量不匹配domain.com或domain.devserver.com。在顶部添加'var_dump($ _ SERVER ['HTTP_HOST'])'并在目标服务器上运行几次。我保证,当它不起作用时,输出将会有所不同(可能像www.domain.com)。 –

我看不出什么毛病上面的代码,但也许一个开关将使其行为正常。

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; 
} 
+0

谢谢堆 - 是的,我实际上已经尝试过,有时它有效,有时它不会。我不确定在服务器上是否有任何可能会妨碍正常工作的内容,但是我已经三重检查了mysql凭据,所以我很确定这不是问题。今天晚些时候我会尝试更换版本 - 谢谢堆。 – CMSCSS

+0

有时候它有时不起作用?它是否适用于某些服务器而不适用于其他服务器? – BGundlach

+0

是的,我认为我们需要追查为什么它有时不起作用,可能是MySQL用户权限问题?欢呼 – CMSCSS

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