Хорошо, я понял, по крайней мере для PHP CLI.
Это отключит Xdebug для веб-запросов, но вы сможете запускать команды CLI с и без Xdebug. Если вы пишете много автоматических тестов, это может стоить.
Во-первых, полностью отключите Xdebug. Запустите php --version
, чтобы подтвердить, что вы не видите такой строки "с Xdebug v2.9.2, Copyright (c) 2002-2020 by Derick Rethans".
Затем выполните php -i | grep ^extension_dir
, чтобы узнайте, где хранятся ваши PHP расширения. CD в эту папку и проверьте, можете ли вы найти xdebug.so там.
Теперь, запустите php
с параметром -dzend_extension=YOUR_XDEBUG.SO_PATH
, чтобы загрузить Xdebug. Пример:
php --version
Дает:
PHP 7.4.2 (cli) (built: Feb 1 2020 19:47:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.2, Copyright (c), by Zend Technologies
php -dzend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so --version
Дает:
PHP 7.4.2 (cli) (built: Feb 1 2020 19:47:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.2, Copyright (c), by Zend Technologies
with Xdebug v2.9.2, Copyright (c) 2002-2020, by Derick Rethans
В моем В этом случае я создал псевдоним bash с несколькими дополнительными параметрами для более детального управления:
alias phpx='PHP_IDE_CONFIG="serverName=someServerNameInPHPStorm" php -dzend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so -dxdebug.remote_autostart=1 -dxdebug.remote_enable=1 -dxdebug.default_enable=1 -dxdebug.remote_connect_back=1 -dxdebug.remote_handler=dbgp -dxdebug.remote_port=9000 -dxdebug.idekey=PHPSTORM -dxdebug.remote_host=127.0.0.1';
Поэтому я использую его следующим образом: phpx run_something.php
для запуска с Xdebug и php run_something.php
без, для оптимальной производительности.
Спасибо @LazyOne за совет, и я надеюсь, что Xdebug исправит эту проблему производительности, потому что, как я уже сказал, этот обходной путь не будет работать для веб-запросов.