使用.env在Symfony 4中动态禁用Web工具栏和分析器

3

如果APP_ENVdev,则Web分析工具将被激活。这是我们的暂存服务器上的情况;但是,在我们的演示服务器上运行了一次安全审核,需要我们手动关闭分析工具,同时保持APP_ENV=dev

以下操作可以成功禁用分析工具和工具栏:

web_profiler:
    toolbar: false
    intercept_redirects: false

framework:
    profiler: 
      { enabled: false, only_exceptions: false }

但是我想使用.env来使用我们可以控制以禁用每个标志。当我尝试时,Symfony会抱怨:

Environment variables "bool:SYMFONY_TOOLBAR" are never used. Please, check your container's configuration.

这使我想到了这里的答案,它声称:

profiler > enabled不能使用运行时环境变量进行设置,因为这控制是否在容器中创建所有分析器服务(在需要包装服务以能够分析它们时)。完全更改容器无法在运行时完成(而且此布尔配置的值不会在容器中自身被设置,这就是触发此错误的原因)

开发人员说“在仅在dev模式下加载的文件中使用参数”,但我不知道这意味着什么;那么,我该如何解决这个问题?(.env不是必需的,只是理想的)


你说需要你的环境是“dev”?是需要将环境称为“dev”吗?还是需要安装“dev”包?请具体说明你的需求。 - yivi
1
为了跟进 @yivi 所建议的,您可以建立一个临时环境并相应地进行调整。 - Cerad
大家好,APP_ENV被设计为在开发中使用值dev,如此处所示:https://symfony.com/doc/4.1/configuration/environments.html 但问题是我们确实有一个暂存服务器:我只需要在暂存服务器上使用标志禁用Web分析器和分析器。但我似乎无法让它起作用。当然,我可以推送硬编码的“false”值,但这将需要手动更改我们的存储库,而不是我们的.gitignore文件中的.env文件。 - Vael Victus
但是你需要将环境命名为“dev”吗?难道你不能为暂存创建一个不同的环境吗?例如:APP_ENV=staging。请不要只是重复你想要“使用值dev”,请解释一下你需要这个配置在这个环境中表示什么。另外,如果你不@其他用户,我们就不会知道你在这里发表评论了。 - yivi
1个回答

1
由于框架加载其环境变量的顺序,无法在web_profiler.yaml中使用环境标志。幸运的是,创建一个新的环境并不太难或可怕:

https://symfony.com/doc/4.1/configuration/environments.html#creating-a-new-environment

创建你的环境,将新的 web_profiler.yaml 保存在其中,然后将其添加到 bundles.php 的相关行;在我的情况下,添加了 staging 环境后,我的行看起来像这样:

Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true, 'staging' => true],


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接