Symfony在parameters.yml中存储加密的DB密码

时间:2018-05-29 10:02:18

标签: php symfony

基于THIS question

我需要以加密形式在parameters.yml中存储数据库密码。我发现了一个类似的问题,并试图让我自己的编译器传递并注册它,代码如下:

<?php

namespace AppBundle\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class ParametersCompilerPass implements CompilerPassInterface
{
  public function process(ContainerBuilder $container)
    {
      $container->setParameter('database_password', 'my_pass');//setting the updated value for DB password 
      var_dump($container->getParameter('database_password'));//here updated password is produced
    }
}

AppBundle注册通行证:

 public function build(ContainerBuilder $container)
{
    parent::build($container);
    $container->addCompilerPass(new ParametersCompilerPass(), PassConfig::TYPE_AFTER_REMOVING);
}

代码运行,在我的调试var_dump函数中,我看到了我的数据库的更新传递,但是对于实际连接,使用了存储在parameters.yml中的值,这是错误的并且没有与数据库的连接是制作。任何想法如何解决它?谢谢。

1 个答案:

答案 0 :(得分:0)

问题解决了

到app / config文件夹添加新文件parameters.php

在此文件中,您可以访问服务容器,添加以下行:

$container->setParameter('your_param', 'your_value');
文件config.yml中的

将以下行添加到imports部分:

- { resource: parameters.php }

之后,在任何初始化之前设置参数