在 Symfony 中从 PHP 中为 Doctrine 覆盖 yaml 中的数据库详细信息

Overriding database details in yaml for Doctrine from PHP in Symfony

我是 Symfony 的新手,正处于完成一些模板并连接到数据库的阶段(工作中使用 Oracle,mysql 在家)。

但是,我目前只有 yaml 文件中的详细信息,这不是很安全。在我们的 PHP 应用程序(将转移到 Symfony)中 PHP 处理安全密码,我们最终可能会使用 Password Manager Pro 或证书之类的东西。

如何覆盖 yaml 文件中的内容并处理 PHP 中的密码、连接字符串等?

为了将来参考(来自 http://symfony.com/doc/current/configuration/external_parameters.html#environment-variables,感谢 malcolm),请执行以下操作:

1) 在app/config/中添加一个parameters.php,代码如下:

<?php // app/config/parameters.php
$container->setParameter('database_name', 'dbname');
$container->setParameter('database_user', 'username');
$container->setParameter('database_password', 'password');

您可以从 parameters.yml 文件(或您的配置中的任何其他文件)中添加任何您想要的参数。

2) 通过将以下内容添加到导入来导入此文件:config.yml 部分:

- { resource: parameters.php }

这将使该部分看起来像:

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }
    - { resource: parameters.php }

并且通常在 config.yml.

的开头

现在 parameters.php 中的任何内容都将覆盖 parameters.yml 文件中的任何内容。