Symfony2 停止 Composer 将 parameters.yml.dist 安装到 parameters.yml

Posted

技术标签:

【中文标题】Symfony2 停止 Composer 将 parameters.yml.dist 安装到 parameters.yml【英文标题】:Symfony2 stop Composer installing parameters.yml.dist into parameters.yml 【发布时间】:2013-07-01 08:40:52 【问题描述】:

symfony 2.3 中的新功能composer install 脚本还将parameters.yml.dist 文件内容复制到parameters.yml 文件中,进一步解释here。

我的问题是,我怎样才能阻止作曲家执行此操作?

【问题讨论】:

【参考方案1】:

从您的composer.json 中删除此行两次:

"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",

这是由 IncenteevParameterHandler 库完成的,其中包含执行此操作的脚本。通过从配置中删除脚本,它将永远不会被调用。

如果您永远删除该行,您也可以删除这些行(因为不再需要该库):

"incenteev/composer-parameter-handler": "~2.0",

...

"incenteev-parameters": 
    "file": "app/config/parameters.yml"
,

【讨论】:

不是这样。所发生的只是 Composer 现在不会调用 ScriptHandler 的 buildParameters 方法。它甚至不是核心 symfony 代码的一部分,它是一个 3rd 方包。 (所以它的删除不会有任何副作用。)它包含在标准发行版中,因为它在团队工作时非常有用 - 即使只有 2 人 - 所以最终我不建议删除这个功能。 【参考方案2】:

将此参数数组留空:

"incenteev-parameters": 
    "file": "app/config/parameters.yml"
,

在您的 composer.json 文件的额外部分中应该可以工作。

"incenteev-parameters": ,

【讨论】:

【参考方案3】:

第一个解决方案:在 composer.json'extra' 部分添加 "keep-outdated": true /em>。

[...]
"extra": 
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "incenteev-parameters": 
        "file": "app/config/parameters.yml",
        "keep-outdated": true  <------------ ADDED LINE ------------
    ,
    "branch-alias": 
        "dev-master": "2.3-dev"
    ,
    "symfony-assets-install": "symlink"

[...]

incenteev 不会再删除参数了。

第二种解决方案:修改app/config/parameter.yml.dist文件。 对我来说,它是添加 Sqlite 参数 'path''memory' 并避免在每次执行 composer update 时看到它们被删除。

# app/config/parameter.yml.dist
parameters:
    database_driver:   pdo_sqlite
    database_host:     ~
    database_port:     ~
    database_name:     ~
    database_user:     ~
    database_password: ~
    database_path:     ~ <------------ ADDED LINE ------------
    database_memory:   ~ <------------ ADDED LINE ------------
[...]

我不知道哪种解决方案最好,但两者都有效。

【讨论】:

我最喜欢第二种解决方案,因为它强制您在 parameter.yml.dist 中显示所有项目参数,以便导出您项目的每个人都知道它们。【参考方案4】:

我认为这是正确的解决方案:

"incenteev-parameters": 
    "file": "app/config/parameters.yml",
    "keep-outdated": true
,

在这个 github 问题 https://github.com/symfony/symfony-standard/issues/642 以及 github 文档中提到了 incenteev-parameters https://github.com/Incenteev/ParameterHandler

【讨论】:

以上是关于Symfony2 停止 Composer 将 parameters.yml.dist 安装到 parameters.yml的主要内容,如果未能解决你的问题,请参考以下文章

安装 symfony2 cmf composer 问题

symfony2.7 prod环境部署的几个问题

Symfony2 Doctrine ORM 安装配置

如何创建将在 Symfony2 中过期/销毁会话的命令控制台?

配置 Apache (MAMP) 以使用 Symfony2

为啥 Composer 中的依赖项更新如此缓慢?