我有一个用PHP编写的api,用于支持我的Android应用程序的后端服务。我正在设置不同的环境 - 开发,升级,生产 - 每个环境都有自己的数据库。 API对其各自的MySQL数据库执行查询,所有内容都在开发中运行良好。
我的问题是关于在每个环境中为api处理不同数据库连接的正确技术?有没有一种更简单的方法来更改我的php-> mysql连接使用的数据库,而不是在从开发部署到分段之前手动更改所有数据库?
我来自Android环境,所以马上想到的是Gradle的构建风格以及如何根据您想要的特定构建变体使用不同的代码。
答案 0 :(得分:1)
我认为这是Apache environment variables的一个很好的用例,可以在httpd.conf文件(或.htaccess文件)中设置。
基本上,你可以这样:
SetEnv DATABASE_NAME "MyDB"
在你的httpd.conf文件中,然后在PHP中使用:
$_SERVER['DATABASE_NAME']
访问它。
通常,最好将特定于环境的内容保留在代码之外,以便您的代码更具可移植性。你的案子就是一个很好的例子。
修改(rpm): 确保在修改httpd.conf文件后重新启动apache。我有问题得到这个答案工作,但重新启动Apache修复了一切。
答案 1 :(得分:0)
我们所做的是将数据库连接参数放在单独的包含文件中,例如
$db_host = "xxx";
$db_user = "xxx";
$db_password = "xxx";
$db_database = "xxx";
然后其他脚本可以使用
require_once('db_params.php');
并在建立数据库连接时使用这些变量。
然后我们在不同的环境中使用不同的脚本内容。