我在 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
但是当我运行php app/console doctrine:schema:update --dump-sql -e=prod
时,它仍然使用 parameters.yml 中的配置集。
Doctrine \ Bundle \ DoctrineBundle \ Command \ Proxy \ UpdateSchemaDoctrineCommand 中的var_dump($this->getApplication()
方法中的execute
显示正确的环境无法从获取配置config_prod.yml
public $parameters =>
array(428) {
...
'kernel.environment' =>
string(4) "prod"
...
'database_host' =>
string(9) "127.0.0.1"
我是否遇到过错误,或者此命令无法处理不同的环境?
答案 0 :(得分:1)
简短:您必须在prod环境中的每次配置更改后清除缓存。在开发环境中,每次请求都会重建缓存(某些部分不是)。但不是生产。
实际上,配置被编译到缓存中。在每个请求上从YAML / XML加载配置太重了。在getDefaultParameters()
中查找方法app/cache/prod/appProdProjectContainer.php
,您可以看到,所有配置参数都合并在一个巨大的数组中。
您会注意到,您在config.yml
中配置的数组中的参数通常不相同。注入这些参数取决于bundle及其特定的扩展类。有关更多信息,请参阅Semantic Configuration。