作曲家如何了解symfony环境

作曲家如何了解symfony环境,symfony,composer-php,Symfony,Composer Php,我尝试在“集成”环境中部署应用程序,但在“composer update”命令之后,生成的parameters.yml文件不包含可能的集成参数 以下是我所做的: 我在app/config中创建了一个“config_integ.yml”文件,其中包含: # app/config/config_integ.yml imports: - { resource: parameters_integ.yml } - { resource: config.yml } framework:

我尝试在“集成”环境中部署应用程序,但在“composer update”命令之后,生成的parameters.yml文件不包含可能的集成参数

以下是我所做的: 我在app/config中创建了一个“config_integ.yml”文件,其中包含:

# app/config/config_integ.yml
imports:
    - { resource: parameters_integ.yml }
    - { resource: config.yml }

framework:
    profiler: { only_exceptions: false }
parameters_integ.yml文件包含集成环境的参数。乞讨的例子:

parameters:
    database_host: localhost
    database_port: null
    database_name: test_integ
    database_user: root
parameters.yml.dist包含以下带有默认值的参数:

parameters:
    database_host:     127.0.0.1
    database_port:     ~
    database_name:     symfony
    database_user:     root
如何告诉composer使用parameters_integ.yml文件来构建parameter.yml文件?因为之后将有一个prod环境,所以无法在parameters.yml.dist文件中写入参数

如果您需要其他信息,请告诉我


感谢您的帮助

最佳做法是在
app/config/parameters.yml.dist
文件中设置默认参数

请参阅此链接:

运行时:

composer update

它将使用
parameters.yml.dist
并用
dist
文件中的值覆盖
parameters.yml

最佳做法是在
app/config/parameters.yml.dist
文件中设置默认参数

请参阅此链接:

运行时:

composer update
它将使用
parameters.yml.dist
并用
dist
文件中的值覆盖
parameters.yml

1)您应该在VCS中包含composer.jsoncomposer.lock

2) 您不应在VCS中包含参数.yml

3) 部署Sf应用程序时,应使用composer安装

  • 编写器安装编写器更新之间的差异(++编写器锁定):

4) 我可以想出几种在集成环境中创建parameters.yml的方法:

  • 您可以手动创建parameters.yml文件,并将其放置在parameters.dist.yml

  • 如果没有参数。yml参数。yml缺少一些参数,当您运行composer install时,系统将提示您输入缺少的参数和参数。yml将在composer install过程中创建/更新

  • 您可以拥有一个app/config/parameters文件夹,其中包含parameters\u prod.ymlparameters\u integ.yml文件,其中一个文件在部署期间自动复制到parameter.yml文件中(最复杂的解决方案)

如果希望通过浏览器访问集成环境,还应为其创建前端控制器。将web/app.php文件复制到web/app_integ.php并编辑要集成的环境:

// web/app_integ.php
// ...

// change just this line
$kernel = new AppKernel('integ', false);

// ...
更多信息请访问


而对题目“作曲家是如何了解symfony环境”的回答——我认为作曲家对Sf环境一无所知

composer有require dev选项,用于生产中不需要的包、运行测试所需的包(例如phpunit)、开发过程中的一些调试工作,等等。 例如,我的一个composer.json文件如下所示:

...
"require-dev": {
    "sensio/generator-bundle": "^3.0",
    "symfony/phpunit-bridge": "^3.0",
    "doctrine/doctrine-fixtures-bundle": "^2.3",
    "nelmio/alice": "^2.1",
    "deployer/deployer": "^4.0"
},
...
如果我运行
composer安装--no dev
,这些软件包将不会安装在供应商目录中

但是,Sf如何知道何时在应用程序中包括/省略某些软件包

这是在AppKernel.php中定义的

composer.json中,在“require dev”键下,我定义了我不希望在生产中使用任何固定装置

因此,在AppKernel.php中,我放置了以下代码行:

if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
    ...
    $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
}
如果我在生产模式下运行我的应用程序,将不会有DoctrineFixturesBundle。

1)您应该在VCS中包含composer.jsoncomposer.lock

2) 您不应在VCS中包含参数.yml

3) 部署Sf应用程序时,应使用composer安装

  • 编写器安装编写器更新之间的差异(++编写器锁定):

4) 我可以想出几种在集成环境中创建parameters.yml的方法:

  • 您可以手动创建parameters.yml文件,并将其放置在parameters.dist.yml

  • 如果没有参数。yml参数。yml缺少一些参数,当您运行composer install时,系统将提示您输入缺少的参数和参数。yml将在composer install过程中创建/更新

  • 您可以拥有一个app/config/parameters文件夹,其中包含parameters\u prod.ymlparameters\u integ.yml文件,其中一个文件在部署期间自动复制到parameter.yml文件中(最复杂的解决方案)

如果希望通过浏览器访问集成环境,还应为其创建前端控制器。将web/app.php文件复制到web/app_integ.php并编辑要集成的环境:

// web/app_integ.php
// ...

// change just this line
$kernel = new AppKernel('integ', false);

// ...
更多信息请访问


而对题目“作曲家是如何了解symfony环境”的回答——我认为作曲家对Sf环境一无所知

对于生产中不需要的软件包,composer有require dev选项,需要软件包