Symfony 4:如何通过命令行在test-env中禁用探查器

时间:2019-10-16 13:24:10

标签: symfony environment-variables symfony4 profiler

我现在尝试了相当长的一段时间以在测试环境中禁用探查器。唯一有效的方法是在文件APP_ENV=test中手动设置.env,但是我想通过命令行而不是通过编辑文件来实现。

这是我尝试过的所有内容:

  • 我尝试编辑bin/console,如该线程中Chris Brown的答案所述:Load different .env file with a Symfony 4 command(我还添加了文件.env.test,根据xdebug,它会加载适当的文件并运行适当的代码,并且当我使用$env运行服务器时,变量$debug--env=test --no-debug也会获得适当的值

  • 我尝试设置profiler: enabled: false,如该线程中flu的答案所述:How to disable profiler in Symfony2 in production?(在config / packages / test / framework.yaml中)

  • 我尝试将bundles.php中的探查器行设置为

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

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

我分别尝试了这些解决方案,也一起尝试了这些解决方案,但探查器仍然不断弹出。有人有主意吗?

编辑: 应用Alister Bulman的答案后,命令将给我以下信息:

#php bin/console -e test debug:config framework profiler

Current configuration for "framework.profiler"
==============================================

enabled: true
collect: false
only_exceptions: false
only_master_requests: false
dsn: 'file:%kernel.cache_dir%/profiler'

编辑2: 多亏了Jared Farrish,我才发现浏览器正在“开发”模式下接收网站,尽管服务器是在cli的测试环境中启动的。显然编辑bin/consolepublic/index.php是不够的,当服务器收到来自浏览器的请求时,它们不会被调用。

编辑3: 因此,我发现http请求首先发送到public/index.php,但是尽管我首先在此处启动了整个服务器,但是我似乎无法在bin/console中定义任何可用的内容。任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:2)

可以在框架配置中启用或禁用配置文件。

> bin/console -e dev debug:config framework profiler

Current configuration for "framework.profiler"
==============================================
only_exceptions: false
enabled: true
collect: true
only_master_requests: false
dsn: 'file:%kernel.cache_dir%/profiler'

在新生成的项目中,最好在config/packages/test/framework.yaml文件中设置这些设置(针对测试环境)。

framework:
    profiler: 
        enabled: false
        collect: false
        # optionally others

有关框架配置(分析器及其他)的文档位于https://symfony.com/doc/current/reference/configuration/framework.html#profiler

答案 1 :(得分:0)

我自己找到的。我所做的是使用php.ini的功能,即“ auto_prepend_file”,您可以在其中指定一个PHP文件,该文件在执行实际的PHP内容之前会自动执行。因此,在其中放置了具有以下内容的文件的路径:

testing