Отключите Xdebug в контейнере docker перед запуском PHPUnit через PhpStorm

#docker #phpunit #phpstorm #xdebug

#docker #phpunit #phpstorm #xdebug

Вопрос:

Я настроил PhpStorm в соответствии с этим руководством: PHPUnit для PhpStorm

Я могу успешно запустить свой тест PHPUnit, так что это работает.

Проблема в том, что в моем контейнере docker я включил Xdebug, который мне иногда нужен. Обычно я docker exec захожу в контейнер и запускаю тесты там. Xdebug сильно замедляет тесты, поэтому я делаю это phpdismod -s cli xdebug перед запуском своих тестов. Тогда тесты выполняются в 100 раз быстрее!

Теперь я хочу добиться такого же поведения при запуске тестов через PhpStorm. PhpStorm открывает собственный контейнер docker, где он запускает тесты. Я не знаю, как я могу сообщить PhpStorm о запуске phpdismod -s cli xdebug перед запуском PHPUnit. Есть ли способ сделать это?

Ответ №1:

Согласно ссылке, которую вы упомянули, есть способ задать имя изображения, например, как shlink_shlink_php:latest .

Что вам нужно сделать, так это добавить entrypoint.sh в свой собственный образ и на основе переменной envrionment вы можете включить или отключить режим отладки, например:

 export DEBUG="${DEBUG:-on}"
if [ "$DEBUG" == "off" ]; then
  phpdismod -s cli xdebug
fi
  

Таким образом, по умолчанию значение отладки равно on , что означает оставить режим xdebug активным. однако, если вы передали значение среды, вызываемое DEBUG со значением off , это отключит xdebug.

Вы можете передавать переменные среды, как описано здесь.

В качестве альтернативы, вы можете проверить следующие параметры, которые упомянуты в here, например, попробуйте передать -dxdebug.remote_enable=0 через php дополнительные параметры из PhpStorm (я не уверен, что предотвращение подключения к удаленному интерпретатору будет таким же, как отключение отладчика, поскольку я не эксперт в этой части, но вы тоже можете это проверить)