我现在尝试了相当长的一段时间以在测试环境中禁用探查器。唯一有效的方法是在文件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/console
和public/index.php
是不够的,当服务器收到来自浏览器的请求时,它们不会被调用。
编辑3:
因此,我发现http请求首先发送到public/index.php
,但是尽管我首先在此处启动了整个服务器,但是我似乎无法在bin/console
中定义任何可用的内容。任何人都知道如何做到这一点?
答案 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