我想在heroku上使用MySQL运行一个应用程序。为此,我已经安装和配置了cleardb。我要做的就是配置环境变量。但是,我找不到合适的方法来做这个。
在这个文章中,Matt解释了如何配置上述变量:
// config/database.php
$url = parse_url(getenv("CLEARDB_DATABASE_URL"));
$host = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$database = substr($url["path"], 1);
// . . .
'mysql' => array(
'driver' => 'mysql',
'host' => $host,
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),他还说:
如果您实际上是在一个真正的站点上工作,您应该确保您只是在为您的生产环境专门编辑数据库凭据。
那么,环境变量在生产中应该如何配置,以便在heroku上使用MySQL运行cleardb?
发布于 2016-04-21 22:46:15
如果标记为Laravel5.2,则需要在.env文件中设置环境变量。此文件不包含在版本控制中,因为每个安装都应该有不同的版本。默认情况下提供.env.example。
例如,如果您的URL是:
CLEARDB_DATABASE_URL => mysql://adffdadf2341:adf4234@us-cdbr-east.cleardb.com/heroku_db?reconnect=true然后,在您的.env文件中可以放置:
DB_CONNECTION=mysql
DB_HOST=us-cdbr-east.cleardb.com
DB_PORT=3306
DB_DATABASE=heroku_db
DB_USERNAME=adffdadf2341
DB_PASSWORD=adf4234让config/database.php不动。
另一种解决方案是在.env文件中定义上面的URL并按建议动态解析它。注意,这些变量是使用env("CLEARDB_DATABASE_URL")访问的。
编辑
由于CLEARDB_DATABASE_URL是自动设置的,所以最好使用它。
// config/database.php
if ($url = env('CLEARDB_DATABASE_URL', false)) {
$parts = parse_url($url);
$host = $parts["host"];
$username = $parts["user"];
$password = $parts["pass"];
$database = substr($parts["path"], 1);
} else {
$host = env('DB_HOST', 'localhost');
$username = env('DB_USERNAME', 'forge');
$password = env('DB_PASSWORD', '');
$database = env('DB_DATABASE', 'forge');
}
// ...
'mysql' => [
'driver' => 'mysql',
'host' => $host,
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],发布于 2016-04-18 20:30:35
在Heroku上设置环境变量非常简单。您可以使用Heroku,如下所示: heroku :set CLEARDB_DATABASE_URL="Your“
您还可以通过Heroku仪表板轻松地配置环境变量。
https://stackoverflow.com/questions/36663208
复制相似问题