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

时间:2019-07-14 21:56:10

标签: symfony symfony4

如果APP_ENVdev,则将Web Profiler设置为激活。在我们的登台服务器上就是这种方式。但是,正在我们的登台服务器上进行安全审核,并且要求我们在保持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.

这导致我得到一个答案here,该答案声称:

  

profiler > enabled不能用运行时env变量设置,因为它控制是否在容器中创建所有探查器服务(只要需要就可以对它们进行探查来包装服务)。不能在运行时完全更改容器(并且此boolean配置的值最终不会在容器中的任何位置自行设置,这就是触发此错误的原因)

开发人员说“在仅以开发人员模式加载的文件中使用参数”。但是我不知道那是什么意思;那么,我该如何解决呢? (.env不是必需条件,只是理想条件)

1 个答案:

答案 0 :(得分:0)

由于框架加载环境变量的顺序,因此无法在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],