如何在生产中禁用Symfony2中的分析器?

pin*_*een 15 php symfony symfony-2.0

如何在生产中禁用Symfony2中的分析器?

我不是指工具栏 - 我的意思是探查器.

我想在生产中禁用它,我将其广泛用于开发,因此删除其捆绑包的解决方案是不行的.

我试过设置framework.profiler.only_exceptions为true.我试过framework.profiler完全删除该部分.无论profiler.db在每个请求之后增长,每个响应都包含x-debug-token标头.

我已经仔细检查了配置文件(config.yml和config_prod.yml),一切似乎都被罚款了.

更重要的是命令app/console router:dump-apache --no-debug总是转储_wdt_profiler路由,但是我没有在routing_prod.yml中使用它们,并且当尝试从浏览器访问它们时它们似乎不存在(404).

我正在运行symfony 2.0,我现在不会升级,因为2.1中的一些重大变化需要重写许多元素.在初始部署之前启动它是不明智的.

flu*_*flu 14

Symfony> = 2.2

从Symfony 2.2开始,分析器支持enabled框架配置中的标志,并且在test环境中默认禁用.

# app/config/config_test.yml
framework:
    profiler:
        enabled: false
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此博客条目,其中包括Fabien Potencier的ProfilingFrameworkBundle配置参考.

更新:此标志在Symfony 4.0中仍然有效.


Symfony <= 2.1

在Symfony <= 2.1中,如果framework.profiler配置中没有密钥,则完全禁用分析器.

您可以在Symfony2 FrameworkBundle配置的ProfilerPass中看到这一点.

这是默认情况config.ymlconfig_prod.yml(包括前者)的情况.所以,如果你没有修改默认配置,那你就没事了.

config_dev.yml但是默认设置为:

framework:
    profiler: { only_exceptions: false }
Run Code Online (Sandbox Code Playgroud)

这使得剖析了dev环境和导入所有enviroments config_dev.yml喜欢config_test.yml.

如果要在后续配置中取消设置探查器值,请使用:

framework:
    profiler: false
Run Code Online (Sandbox Code Playgroud)

值类似于{}~不会取消设置值.你必须使用false.