我们有一个本地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 - 任何有关正确方向的帮助或指示都会非常感激。
干杯
本
答案 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/