Php 使用Composer.json-incenteev parameters中带有env-map选项的数组节点从环境变量生成parameters.yml
我在symfony 3.2控制台应用程序中有这个参数文件结构Php 使用Composer.json-incenteev parameters中带有env-map选项的数组节点从环境变量生成parameters.yml,php,json,symfony,composer-php,yaml,Php,Json,Symfony,Composer Php,Yaml,我在symfony 3.2控制台应用程序中有这个参数文件结构 parameters: database: driver: pdo_mysql host: 127.0.0.1 dbname: dbname user: 123 password: 123 log_path: /logs 我使用composer.json从环境变量创建parameters.yml: "incenteev-p
parameters:
database:
driver: pdo_mysql
host: 127.0.0.1
dbname: dbname
user: 123
password: 123
log_path: /logs
我使用composer.json从环境变量创建parameters.yml:
"incenteev-parameters": [
{
"file": "app/config/parameters.yml",
"env-map": {
"driver: "_DB_DRIVER",
"host": "_DB_HOST",
"name": "_DB_NAME",
"user": "_DB_USER",
"password": "_DB_PASSWORD",
"log_path" : "-LPATH"
}
},
{
"file": "app/config/parameters.yml",
"dist-file": "app/config/parameters.yml.dist",
"parameter-key": "parameters"
}
]
运行以下命令时,为什么数据库节点下的值不更新
_DB_HOST=“SOMEVALUE” composer install -n
还有为什么env()函数不能在中工作,例如:
"user": "%env(user)%",
未实现对嵌套参数的处理。看
(与您的问题非常相似)以及
(这似乎解决了这个问题——尽管不太清楚这是否也实现了通过env变量替换嵌套参数)
作为参考,第一个链接中针对您的情况提出的解决方案是
parameters:
db_driver: pdo_mysql
db_host: 127.0.0.1
db_name: dbname
db_user: 123
db_password: 123
log_path: /logs
然后在composer.json
中:
...
"env-map": {
"db_driver: "_DB_DRIVER",
"db_host": "_DB_HOST",
...
}
...
对你的案子来说不是一个严格的解决方案,但这不是你的选择吗?不,我正在寻找composer.json更新。谢谢,但这不适合我当前的状态。现在我尝试使用env()方法获取env变量,但在控制台应用程序中,即使我编译了容器,它也不起作用。它给出了类似于“环境驱动程序b1db3beb68814e9477f4f2f2600aaf4a83”的内容。你知道为什么吗?am使用symfony 3.2控制台和配置组件。