如何为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 - 任何帮助或指针在正确的方向,将不胜感激。
干杯
本
答
我看不出什么毛病上面的代码,但也许一个开关将使其行为正常。
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;
}
这是非常基本的PHP。 “怪异问题”没有太多空间。很明显,HTTP_HOST变量不匹配domain.com或domain.devserver.com。在顶部添加'var_dump($ _ SERVER ['HTTP_HOST'])'并在目标服务器上运行几次。我保证,当它不起作用时,输出将会有所不同(可能像www.domain.com)。 –