database.yml配置文件的替代文件


Alternative to database.yml configuration file

我想知道在symfony 1.4中是否可以在其他地方设置数据库连接密码(和用户名),或者是否可以以某种方式加密这些数据。

要求这样做的客户说这样做是不安全的,所以我正在寻找另一种方法。

谢谢。

您可以在yml文件中使用php:

all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn: '<?php echo DSN_CONSTANT ?>'
      username: '<?php echo $_ENV['DB_USERNAME'] ?>'
      password: '<?php echo $_ENV['DB_PASSWORD'] ?>'

编辑:

上面的方法将凭据存储在文件系统的php文件中。如果你想防止这种情况,请将class更改为你自己的,扩展它,并以任何其他方式检索凭据,例如,环境变量:

class MyDoctrineDatabase extends sfDoctrineDatabase {
  public function initialize($parameters = array())
  {
    $parameters['dsn'] = $_ENV['DSN'];
    $parameters['username'] = $_ENV['DB_USERNAME'];
    $parameters['password'] = $_ENV['DB_PASSWORD'];
    return parent::initialize($parameters);
  }
}