Symfony 4:如何通过命令行在 test-env 中禁用探查器
Symfony 4: How to disable profiler in test-env through command line
我已经尝试了很长一段时间来禁用测试环境中的探查器。它工作的唯一方法是在文件 .env
中手动设置 APP_ENV=test
但我想通过命令行而不是通过编辑文件来执行此操作。
这是我尝试过的一切:
我尝试编辑 bin/console
,就像 Chris Brown 在这个帖子中的回答中描述的那样:Load different .env file with a Symfony 4 command(我还添加了文件 .env.test
,并且根据 xdebug 它通过适当的代码加载适当的文件和 运行s,当我 运行 使用 --env=test --no-debug
的服务器时,变量 $env
和 $debug
也得到适当的值)
我尝试设置 profiler: enabled: false
就像流感在这个帖子中的回答中描述的那样: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 我刚刚发现浏览器正在以 "dev" 模式接收网站,尽管服务器是在 cli 上的测试环境中启动的。显然编辑 bin/console
和 public/index.php
是不够的,当服务器收到来自浏览器的请求时,它们不会被调用。
编辑 3:
所以我发现 http 请求首先到达 public/index.php
,但无论我做什么,我似乎都无法在那里提供任何在 bin/console
中定义的内容,尽管整个服务器首先在那里启动。有人知道如何做到这一点吗?
可以在框架配置中启用或禁用配置文件。
> 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
我自己找的。我所做的是使用 php.ini 的功能,称为 "auto_prepend_file",您可以在其中指定一个 PHP 文件,该文件在执行实际 PHP 内容之前自动执行。所以在那里我放了一个包含以下内容的文件的路径:
<?php
$_ENV['APP_ENV'] = 'test';
$_ENV['APP_DEBUG'] = 0;
我已经尝试了很长一段时间来禁用测试环境中的探查器。它工作的唯一方法是在文件 .env
中手动设置 APP_ENV=test
但我想通过命令行而不是通过编辑文件来执行此操作。
这是我尝试过的一切:
我尝试编辑
bin/console
,就像 Chris Brown 在这个帖子中的回答中描述的那样:Load different .env file with a Symfony 4 command(我还添加了文件.env.test
,并且根据 xdebug 它通过适当的代码加载适当的文件和 运行s,当我 运行 使用--env=test --no-debug
的服务器时,变量$env
和$debug
也得到适当的值)我尝试设置
profiler: enabled: false
就像流感在这个帖子中的回答中描述的那样: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 我刚刚发现浏览器正在以 "dev" 模式接收网站,尽管服务器是在 cli 上的测试环境中启动的。显然编辑 bin/console
和 public/index.php
是不够的,当服务器收到来自浏览器的请求时,它们不会被调用。
编辑 3:
所以我发现 http 请求首先到达 public/index.php
,但无论我做什么,我似乎都无法在那里提供任何在 bin/console
中定义的内容,尽管整个服务器首先在那里启动。有人知道如何做到这一点吗?
可以在框架配置中启用或禁用配置文件。
> 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
我自己找的。我所做的是使用 php.ini 的功能,称为 "auto_prepend_file",您可以在其中指定一个 PHP 文件,该文件在执行实际 PHP 内容之前自动执行。所以在那里我放了一个包含以下内容的文件的路径:
<?php
$_ENV['APP_ENV'] = 'test';
$_ENV['APP_DEBUG'] = 0;