我尝试在"集成"环境中部署应用程序,但在"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文件来创建parameters. yml文件?因为我将在之后有一个生产环境,所以我不能在parameters. yml. dist文件中写入我的参数。
如果你还需要其他信息请告诉我
谢谢你的帮忙
2条答案
按热度按时间k3bvogb11#
1)您应该在VCS中包含composer. json和composer. lock
2)不应在VCS中包含parameters. yml
3)部署Sf应用程序时,应使用composer install
4)我可以想到几种在集成环境中创建parameters. yml的方法:
或
或
如果希望集成环境可以通过浏览器访问,还需要为集成环境创建一个前端控制器,将web/app. php文件复制到web/app_integ. php,编辑集成环境:
更多信息请访问www.example.comhttps://symfony.com/doc/current/configuration/environments.html#creating-a-new-environment
而标题中问题的答案," composer 是如何知道symfony环境的"-我认为 composer 对sf环境毫无概念:)
composer有一个require-dev选项,用于你在生产中不需要的包,运行测试所需的包(例如phpunit),开发过程中的一些调试工具等等。下面是我的一个composer. json文件的样子:
如果我运行
composer install --no-dev
,这些包将不会安装在vendor目录中。但是,Sf如何知道何时在应用程序中包括/省略一些包。
它是在AppKernel. php中定义的。
在composer. json中,在"require-dev"键下,我定义了我不希望在生产中使用条令固定装置。
因此,在AppKernel. php中,我放置了以下代码行:
而且如果我在生产模式下运行我的应用,就不会有DoctrineFixtureBundle。
jdgnovmf2#
最佳做法是在
app/config/parameters.yml.dist
文件中设置默认参数。查看此链接:www.example.comhttp://symfony.com/doc/current/best_practices/configuration.html#canonical-parameters
运行时:
它将使用
parameters.yml.dist
,并用dist
文件中的值覆盖parameters.yml
。