При запуске composer diagnose
выдает следующую ошибку:
Расширение xdebug загружено, это может немного замедлить работу Composer. Рекомендуется отключить его при использовании Composer.
Как отключить xdebug, только когда я запускаю Composer?
php
composer-php
xdebug
greg0ire
источник
источник
bin/bash
а не/bin/sh
, поскольку последнему не понравилосьfunction
ключевое слово (Ubuntu 14.04 LTS).composer self-update
Эта команда отключит модуль PHP5 Xdebug для CLI (и, следовательно, композитора):
Он удаляет символическую ссылку xdebug.ini из
/etc/php5/cli/conf.d/
Это было предложено на http://blog.lorenzbausch.de/2015/02/10/php-disable-xdebug-for-cli/
Обратите внимание, что для Ubuntu 16.04 вам, вероятно, нужно запустить его следующим образом:
источник
alias xdebug-on='sudo php5enmod -s cli xdebug'
иalias xdebug-off='sudo php5dismod -s cli xdebug'
, поэтому теперь легко включатьxdebug-on
и отключатьxdebug-off
xdebug.Я не думаю, что есть возможность настроить PHP так, чтобы он мог загружать разные конфигурации в соответствии с целевым сценарием. По крайней мере, не без дублирования файлов .ini ...
Однако вы можете добавить эти параметры при запуске композитора с php:
-n
скажет PHP игнорировать любой php.ini. Это предотвратит загрузку xdebug для этой самой команды.-d
options позволяет вам добавить любую опцию, которую вы хотите (например, активировать required_ext.so). Вы можете использовать несколько-d
вариантов. Конечно, это необязательно, возможно, вам это не понадобится.Затем вы можете создать псевдоним, чтобы он снова стал сладким.
Типичное решение (потому что композитору нужен json):
greg0ire> мое решение, основанное на этом:
Это выглядит некрасиво (я пробовал и не смог сделать это с помощью xargs), но работает ... Мне пришлось отключить некоторые расширения, иначе я получаю следующие предупреждения:
источник
-n
вчера, и у меня возникла проблема, потому что мне не хваталоphar
расширения. Я буду стараться добавлять все больше и больше расширений, пока они не заработают, думаю, это хорошее решение. Что касается псевдонима, у меня уже есть несколько псевдонимов zsh, которые я не поддерживаю. Возможно, я попытаюсь заменить двоичный файл сценарием bash или посмотреть, смогу ли я настроить псевдонимы.composer.json
, например "ext-ldap": "*", или просто в зависимости от того, что необходимо для правильного выполнения задач после установки. … Если бы только был способ занести расширение в черный список…php -m
diagnose
, и поскольку я создаю контейнеры докеров для разработки для для своей команды, малейшее улучшение скорости может принести пользу им всемСоздав псевдоним, вы подавите это
composer
xdebug
сообщение об ошибке.Просто добавьте эту строку
~/.bash_aliases
в свою систему, и она должна работать безупречно.Перезагрузите оболочку, чтобы сделать новый псевдоним
composer
доступным.ИСПОЛЬЗОВАНИЕ:
ПРИМЕЧАНИЕ.
Вам не обязательно использовать какие-либо другие параметры.
В зависимости от вашей системы у вас может быть
.bashrc
вместо.bash_profile
.ОБНОВИТЬ:
Как упоминает @AlexanderKachkaev в комментариях, не стоит добавлять memory_limit следующим образом, чтобы избежать сбоев в некоторых ситуациях:
источник
-n
Опция отключаетPhar
расширение поэтому он может не работать изcomposer.phar
alias composer="php -d memory_limit=-1 -n /usr/local/bin/composer"
Я придумал ответ, который очень хорошо работает для OSX и, вероятно, может быть адаптирован для любой версии PHP, которая загружает свои расширения с использованием отдельных файлов .ini в «дополнительном каталоге ini»:
источник
Обычно я создаю сценарий оболочки для каждого проекта, поскольку у каждого проекта есть другая версия PHP. Он находится в
/bin/
каталоге рядом сcomposer.phar
и,composer.json
и я запускаю его как./bin/composer
в каталоге моего проекта.Это выглядит так (для php56)
Параметры
-d
эффективно отключают xdebug.COMPOSER_DISABLE_XDEBUG_WARN=1
Часть отключает вопросы предупреждения композитора.Отключение расширения xdebug предпочтительно (см. Устранение неполадок композитора ), но мне лично нравится более простой сценарий.
Некоторое время на моей машине: 2 Запуск с xdebug и ini-enabled: 1 мин 33
Запуск с xdebug, но с отключенным ini: 0m19
Запускать без xdebug: 0m10
источник
COMPOSER_DISABLE_XDEBUG_WARN=1
: если вы получаете предупреждение, это просто означает, что ваш скрипт не работает. Определениеxdebug.remote_autostart
кажется бесполезным, если удаленная отладка отключена.xdebug.remote_autostart
. Об эффективности скриптов: Composer проверяет, загружено ли расширение xdebug, а не делает ли оно что-либо, посмотрите здесь код . Параметры ini отлично работают в «обычных» сценариях php, но опять же: я не проводил тестов производительности ...Если вы используете PHPStorm, последний выпуск (2016.2) поставляется с функцией включения XDebug для сценариев CLI по запросу, что означает, что вы можете просто отключить XDebug глобально на своей машине разработки. IDE будет включать его на лету, когда это потребуется для кода внутри ваших проектов.
https://blog.jetbrains.com/phpstorm/2016/06/xdebug-on-demand-for-cli-php-scripts-in-phpstorm-2016-2-eap/
Вам необходимо отредактировать настройки PHP Interpreters, чтобы включить путь к XDebug, как описано в связанной статье.
Мне это кажется идеальным решением, так как XDebug мне обычно нужен только в среде IDE.
Однако у XDebug есть и другие потенциальные применения, когда вы находитесь «в автономном режиме», например, расширенные дампы стека в журналах ошибок, которые вы потеряете, отключив его глобально. Конечно, у вас не должно быть включено XDebug в производственной среде, поэтому это будет ограничено такими случаями использования, как бета-тестирование или сценарии CLI автоматического тестирования в процессе разработки.
источник
Вместо того, чтобы путаться с временным включением или отключением модуля PHP, когда у вас могут быть параллельные процессы, использующие PHP (например, как часть конвейера CI), вы можете указать PHP на другой каталог загрузки модуля.
Хотя это похоже на некоторые из упомянутых выше решений, это решает несколько крайних случаев, что очень полезно при использовании Jenkins или другим исполнителем CI, который одновременно запускает тесты на одной машине.
Самый простой способ сделать это - использовать переменную окружения
PHP_INI_SCAN_DIR
Использовать это в скрипте или задаче сборки очень просто:
export PHP_INI_SCAN_DIR=/etc/php.d.noxdebug php composer install
Конечно, вы можете сначала подготовить /etc/php.d.noxdebug, сделав что-то вроде:
mkdir /etc/php.d.noxdebug cp /etc/php.d/* /etc/php.d.noxdebug rm /etc/php.d.noxdebug/xdebug.ini
Это означает, что у вас есть среда, аналогичная старой среде php, с отсутствием только одного модуля. Это означает, что вам не нужно беспокоиться о необходимости загрузки модулей phar / json, как в случае с решением php -n.
источник
Я придумал решение для установщика Composer на базе Windows - он должен работать для любой установки Composer, он просто делает копию загруженного файла INI и комментирует расширение xdebug zend, а затем загружает этот файл конфигурации при запуске composer .
Я открыл проблему, чтобы узнать, хотят ли они интегрировать это изменение:
https://github.com/composer/windows-setup/issues/58
Здесь вы можете найти мои инструкции и код.
источник
Как отмечено в ответе Джойса , этой проблемы больше нет в последней версии Composer.
Документация Composer была обновлена, чтобы отметить это . В нем подробно описано, как включить xdebug с помощью Composer (при необходимости).
Вы можете обновить свою версию Composer, используя самообновление .
На моем Mac мне пришлось сделать:
sudo php /opt/local/bin/composer self-update
Дополнительные сведения об этом в контексте установки Homebrew PHP можно найти в этом выпуске .
источник
Прямое управление конфигурацией PHP
Вот мой вклад, основанный на установке PHP, установленной Homebrew в Mac OS X.
Это оболочка сценария оболочки, предназначенная для сохранения в виде исполняемого файла по адресу
/usr/local/bin/composer
, с двоичным файлом Composer по адресу/usr/local/bin/composer.phar
:Теория Операции
Скрипт-оболочка:
Сценарий связан с установкой PHP 5.5 для OS X / Homebrew. Пути должны быть скорректированы для работы с другими версиями PHP и компоновками каталогов других операционных систем и менеджеров пакетов. Также обратите внимание, что некоторым версиям sed не требуется аргумент пустой строки, следующий за
-i
параметра.Caveat Utilitor
Сценарий прост в том, что он работает непосредственно с основными файлами конфигурации PHP, однако это также является недостатком: Xdebug также будет отключен для любых сценариев, которые выполняются одновременно с этим сценарием.
В моей среде разработки это приемлемый компромисс, учитывая, что Composer запускается вручную и только изредка; однако вы можете не захотеть использовать эту технику, если Composer запускается как часть процесса автоматического развертывания.
источник
В большинстве случаев вам не требуется xdebug в режиме CLI. Если это приемлемо для вас, вы можете настроить cli и cgi по-другому.
Итак, если вы сделаете php-cli.ini и conf-cli.d рядом с выходящим файлом php.ini, вы можете настроить cli и cgi по-другому (для cgi это будут php.ini и conf.d ). Только не помещайте xdebug.ini в conf-cli.d.
источник
Если вы устанавливаете композитор с помощью brew в OS X, вы можете использовать этот псевдоним:
источник
Моим быстрым решением для установки macports с несколькими версиями PHP было написать эту простую оболочку-оболочку для Composer:
Затем запустите любые команды композитора, например:
Недостатки:
Не элегантно, но просто.
источник
$1…$7
... может быть, это$@
или что-то в этом роде, вам придется поискать.Создание псевдонима для композитора для отключения xdebug и предотвращения ошибок памяти:
Добавьте эту строку в свой ~ / .bash_profile
Перезагрузите терминал, чтобы новый псевдоним стал доступен.
источник
Вот мое быстрое решение, чтобы избавиться от предупреждения Xdebug в версии PHP5-cli. Я удалил поддержку Xdebug для PHP5-cli в Ubuntu 14.04.
Теперь больше никаких предупреждений Xdebug на PHP5-cli.
источник
sudo phpdismod xdebug
будет предпочтительным методом грубого обращенияrm