gpt4 book ai didi

php - 如何在 cloudControl 上使用 Symfony2 和 MongoDB?

转载 作者:可可西里 更新时间:2023-11-01 10:31:20 25 4
gpt4 key购买 nike

我想在 cloudControl(PaaS 提供商,如 heroku)容器上使用 Symfony2 和 MongoDB。现在Symfony2 supports the usage of MongoDB :

# app/config/config.yml
doctrine_mongodb:
connections:
default:
server: mongodb://localhost:27017
options: {}
default_database: test_database
document_managers:
default:
auto_mapping: true

由于 MongoDB 是一个 PaaS 插件,我没有静态连接凭证。它们由容器生成。 cloudControl 提供这种方式来访问 PHP 中的凭据:

$credfile = file_get_contents($_ENV['CRED_FILE'], false);
$credentials = json_decode($credfile, true);
$uri = $credentials["MONGOLAB"]["MONGOLAB_URI"];
$m = new Mongo($uri);
$db = $m->selectDB(myDbName);
$col = new MongoCollection($db, myCollection);

我怎样才能将这些动态获取的凭据放入 Symfony2 的 config.yml 中?

最佳答案

解决方案是使用 Symfony2 Miscellaneous Configuration .

因此,创建包含以下内容的 app/config/credentials.php 文件:

<?php
if (isset($_ENV['CRED_FILE'])) {

// read the credentials file
$string = file_get_contents($_ENV['CRED_FILE'], false);
if ($string == false) {
throw new Exception('Could not read credentials file');
}

// the file contains a JSON string, decode it and return an associative array
$creds = json_decode($string, true);

// overwrite config server param with mongolab uri
$uri = $creds["MONGOLAB"]["MONGOLAB_URI"];
$container->setParameter('doctrine_mongodb.connections.default.server', $uri);
}

然后在你的 app/config/config.yml 添加:

imports:
- { resource: credentials.php }

如果这能解决您的问题,请告诉我。

关于php - 如何在 cloudControl 上使用 Symfony2 和 MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com