Symfony 4: Как отключить профилировщик в test-env через командную строку - PullRequest
0 голосов
/ 16 октября 2019

Я довольно давно пытаюсь отключить профилировщик в тестовой среде. Единственный способ, которым это работает, - вручную установить APP_ENV=test в файле .env, но я хочу сделать это через командную строку, а не путем редактирования файла.

Вот все, что я пробовал:

  • Я попытался отредактировать bin/console, как описано в ответе Криса Брауна в этой теме: Загрузить другой файл .env с помощью команды Symfony 4 (я также добавил файл .env.test и, соответственно,для xdebug он загружает соответствующий файл и запускает соответствующий код, а также переменные $env и $debug получают соответствующее значение, когда я запускаю сервер с --env=test --no-debug)

  • Я попытался установить profiler: enabled: false, как описано в ответе гриппа в этой теме: Как отключить профилировщик в Symfony2 в рабочей среде? (в 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],

Я пробовал эти решения по отдельности, а также все вместе, до сих пор профилировщик кеEPS выскакивает. У кого-нибудь есть идея?

РЕДАКТИРОВАТЬ: После применения ответа Алистер Булман команда дает мне это:

#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: СпасибоДжареду Фарришу я только что узнал, что браузер получает сайт в режиме "dev", хотя сервер запускается в тестовой среде на cli. Очевидно, что редактирования bin/console и public/index.php недостаточно, они не вызываются, когда сервер получает запрос от браузера.

РЕДАКТИРОВАТЬ 3: Итак, я обнаружил, что http-запрос сначала идет к public/index.php, но что бы я ни делал, я не могу сделать что-то доступное там, что было определено в bin/console, хотявесь сервер запускается там в первую очередь. У кого-нибудь есть идеи, как это можно сделать?

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Профиль можно включить или отключить в конфигурации платформы.

> 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

0 голосов
/ 29 октября 2019

Я нашел это сам. Я использовал функциональность php.ini, которая называется «auto_prepend_file», где вы можете указать файл PHP, который будет выполняться автоматически перед выполнением фактического содержимого PHP. Итак, я поставил путь к файлу со следующим содержимым:

<?php

$_ENV['APP_ENV'] = 'test';
$_ENV['APP_DEBUG'] = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...