Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Composer.json-incenteev parameters中带有env-map选项的数组节点从环境变量生成parameters.yml_Php_Json_Symfony_Composer Php_Yaml - Fatal编程技术网

Php 使用Composer.json-incenteev parameters中带有env-map选项的数组节点从环境变量生成parameters.yml

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

我在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-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控制台和配置组件。