2

app/config/config_prod.ymlで構成を宣言したので、リモート データベースでコマンドを実行できます。

imports:
    - { resource: config.yml }
doctrine:
    dbal:
        driver:   %database_driver%
        host:     the-ip
        dbname:   the-database
        user:     the-user
        password: the-password

しかし、実行する と、 parameters.ymlphp app/console doctrine:schema:update --dump-sql -e=prodで設定された構成が引き続き使用されます。

Doctrine\Bundle\DoctrineBundle\Command\Proxy\UpdateSchemaDoctrineCommandvar_dump($this->getApplication()executeメソッドの Aは、適切な環境がconfig_prod.ymlから構成を取得しないことを示しています

public $parameters =>
  array(428) {
    ...
    'kernel.environment' =>
    string(4) "prod"
   ...
    'database_host' =>
    string(9) "127.0.0.1"

バグに遭遇したのでしょうか、それともこのコマンドは異なる環境を処理できないのでしょうか?

4

1 に答える 1

1

短い: prod 環境で構成を変更するたびに、キャッシュをクリアする必要があります。開発環境では、要求ごとにキャッシュが再構築されます (一部の部分は再構築されません)。しかし、製品ではありません。

実際、構成はキャッシュにコンパイルされます。リクエストごとに YAML/XML から構成をロードすると、負荷がかかりすぎます。のメソッドgetDefaultParameters()を探すとapp/cache/prod/appProdProjectContainer.php、すべての構成パラメーターが巨大な配列にマージされていることがわかります。

この配列のパラメーターは、多くの場合、同じではないことに気付くでしょうconfig.yml。これらのパラメーターの挿入は、バンドルとその特定の拡張クラスによって異なります。詳細については、セマンティック構成を参照してください。

于 2013-09-09T08:11:05.543 に答える