Lors de l'exécution composer diagnose
, j'obtiens l'erreur suivante:
L'extension xdebug est chargée, cela peut ralentir un peu Composer. Il est recommandé de le désactiver lors de l'utilisation de Composer.
Comment puis-je désactiver xdebug uniquement lorsque j'exécute Composer?
php
composer-php
xdebug
Greg0ire
la source
la source
bin/bash
plutôt que/bin/sh
, car ce dernier n'aimait pas lefunction
mot - clé (Ubuntu 14.04 LTS).composer self-update
Cette commande désactivera le module PHP5 Xdebug pour CLI (et donc composer):
Il supprime le lien symbolique xdebug.ini de
/etc/php5/cli/conf.d/
Cela a été suggéré sur http://blog.lorenzbausch.de/2015/02/10/php-disable-xdebug-for-cli/
Notez que pour Ubuntu 16.04, vous devez probablement l'exécuter comme ceci:
la source
alias xdebug-on='sudo php5enmod -s cli xdebug'
etalias xdebug-off='sudo php5dismod -s cli xdebug'
, il est donc maintenant facile d'activerxdebug-on
et de désactiverxdebug-off
xdebug.Je ne pense pas qu'il existe une option pour configurer PHP afin qu'il puisse charger différentes configurations en fonction du script ciblé. Du moins, pas sans dupliquer les fichiers .ini ...
Cependant, vous pouvez ajouter ces options lors de l'exécution de composer avec php:
-n
dira à PHP d'ignorer tout php.ini. Cela empêchera xdebug de se charger pour cette même commande.-d
options vous permet d'ajouter n'importe quelle option que vous voulez (par exemple, activer required_ext.so). Vous pouvez utiliser plusieurs-d
options. Bien sûr, c'est facultatif, vous n'en aurez peut-être pas besoin.Ensuite, vous pouvez créer un alias pour le rendre à nouveau sucré.
Une solution typique (car le compositeur a besoin de json):
greg0ire> ma solution, basée sur cela:
Cela a l'air moche (j'ai essayé et échoué de le faire avec xargs), mais cela fonctionne ... J'ai dû désactiver certaines extensions, sinon j'obtiens les avertissements suivants:
la source
-n
hier et j'ai eu un problème car il me manquait l'phar
extension. Je vais essayer d'ajouter de plus en plus d'extension jusqu'à ce que cela fonctionne, je pense que c'est une bonne solution. Selon l'alias, j'ai déjà des alias zsh que je ne maintiens pas. Je vais peut-être essayer de remplacer le binaire par un script bash, ou voir si je peux configurer les alias.composer.json
, par exemple "ext-ldap": "*", ou simplement en fonction de ce qui est nécessaire pour que les tâches de post-installation s'exécutent correctement … Si seulement il y avait un moyen de mettre sur liste noire une extension…php -m
diagnose
, et puisque je construis des conteneurs docker de développement pour mon équipe, la plus petite amélioration de la vitesse pourrait bénéficier à tousEn créant un alias, vous supprimerez cela
composer
xdebug
message d'erreur.Ajoutez simplement cette ligne à votre
~/.bash_aliases
système et cela devrait fonctionner parfaitement.Rechargez le shell pour rendre le nouvel alias
composer
disponible.USAGE:
REMARQUE:
vous n'avez pas nécessairement besoin d'utiliser un autre paramètre.
En fonction de votre système, vous pourriez avoir un à la
.bashrc
place de.bash_profile
.METTRE À JOUR:
Comme @AlexanderKachkaev le mentionne dans les commentaires, cela ne vaut rien d'ajouter la limite de mémoire comme suit pour éviter de planter dans certaines situations:
la source
-n
option désactive l'Phar
extension afin qu'elle ne puisse pas s'exécuter à partir decomposer.phar
alias composer="php -d memory_limit=-1 -n /usr/local/bin/composer"
J'ai trouvé une réponse qui fonctionne plutôt bien pour OSX, et qui pourrait probablement être adaptée à toute version de PHP qui charge ses extensions en utilisant des fichiers .ini individuels dans le "répertoire ini supplémentaire":
la source
Je crée généralement un script shell par projet, car chaque projet a une autre version PHP. C'est dans un
/bin/
répertoire à côté decomposer.phar
etcomposer.json
et je l'exécute comme./bin/composer
dans mon répertoire de projet.Cela ressemble à ceci (pour php56)
Les
-d
options désactivent efficacement xdebug. LaCOMPOSER_DISABLE_XDEBUG_WARN=1
pièce désactive les problèmes de composition d'avertissement.Il est préférable de désactiver l'extension xdebug (voir dépannage de composer ), mais j'aime personnellement le script plus simple.
Quelques timings sur ma machine: 2 Exécuter avec xdebug et ini-enabled: 1m33
Exécuter avec xdebug mais ini-désactivé: 0m19
Exécuter sans xdebug: 0m10
la source
COMPOSER_DISABLE_XDEBUG_WARN=1
: si vous recevez un avertissement, cela signifie simplement que votre scrit ne fonctionne pas. La définitionxdebug.remote_autostart
semble inutile si le débogage à distance est désactivé.xdebug.remote_autostart
. À propos de l'efficacité des scripts: Composer vérifie si l'extension xdebug est chargée, pas si elle fait réellement quelque chose, regardez le code ici . Les options ini fonctionnent bien dans les scripts php "normaux" mais encore une fois: je n'ai fait aucun test de performance ...Si vous utilisez PHPStorm, la dernière version (2016.2) comprend une fonctionnalité permettant d'activer XDebug pour les scripts CLI à la demande, ce qui signifie que vous pouvez simplement désactiver XDebug globalement sur votre machine de développement. L'EDI l'activera à la volée quand il sera nécessaire par le code dans vos projets.
https://blog.jetbrains.com/phpstorm/2016/06/xdebug-on-demand-for-cli-php-scripts-in-phpstorm-2016-2-eap/
Vous devez modifier vos préférences d'interpréteurs PHP pour inclure le chemin vers XDebug, comme décrit dans l'article lié.
Pour moi, cela semble être la solution parfaite, car je ne veux généralement XDebug que lorsque je suis dans l'IDE.
Cependant, XDebug a d'autres utilisations potentielles lorsque vous êtes "hors ligne", par exemple les vidages de pile étendus dans les journaux d'erreurs, que vous perdriez en le désactivant globalement. Bien sûr, vous ne devriez pas avoir XDebug activé en production, donc cela serait limité aux cas d'utilisation tels que les tests bêta ou les scripts CLI de test automatisés en développement.
la source
Plutôt que de vous embrouiller avec l'activation ou la désactivation temporaire du module PHP, lorsque vous pourriez avoir des processus simultanés utilisant PHP (par exemple dans le cadre d'un pipeline CI), vous pouvez dire à PHP de pointer vers un répertoire de chargement de module différent.
Bien que cela soit similaire à certaines des solutions mentionnées ci-dessus, cela résout quelques cas marginaux, ce qui est très utile lorsqu'il est utilisé par Jenkins ou un autre coureur CI qui exécute des tests sur la même machine simultanément.
Le moyen le plus simple consiste à utiliser la variable d'environnement
PHP_INI_SCAN_DIR
Il est facile d'utiliser ceci dans un script ou une tâche de construction:
export PHP_INI_SCAN_DIR=/etc/php.d.noxdebug php composer install
Bien sûr, vous voudrez d'abord préparer /etc/php.d.noxdebug, en faisant quelque chose comme:
mkdir /etc/php.d.noxdebug cp /etc/php.d/* /etc/php.d.noxdebug rm /etc/php.d.noxdebug/xdebug.ini
Cela signifie que vous avez un environnement similaire à l'ancien environnement php, avec un seul module manquant. Cela signifie que vous n'avez pas à vous soucier de devoir charger les modules phar / json comme vous le feriez avec la solution php -n.
la source
J'ai proposé une solution pour le programme d'installation de Composer basé sur Windows - cela devrait fonctionner pour toute installation de Composer, il fait simplement une copie du fichier INI chargé et commente l'extension xdebug zend, puis charge ce fichier de configuration lorsqu'il exécute composer composer .
J'ai ouvert un problème pour voir s'ils aimeraient intégrer ce changement:
https://github.com/composer/windows-setup/issues/58
Vous pouvez y trouver mes instructions et mon code.
la source
Comme indiqué dans la réponse de Joyce , ce problème n'existe plus dans la dernière version de Composer.
La documentation de Composer a été mise à jour pour noter cela . Il détaille comment activer xdebug avec Composer (si nécessaire).
Vous pouvez mettre à jour votre version de Composer en utilisant la mise à jour automatique .
Sur mon Mac, je devais faire:
sudo php /opt/local/bin/composer self-update
Plus de détails à ce sujet dans le contexte d'une installation Homebrew PHP peuvent être trouvés dans ce numéro .
la source
Manipulation directe de la configuration PHP
Voici ma contribution basée sur un Homebrew installation PHP installée par sur Mac OS X.
C'est un wrapper de script shell, conçu pour être enregistré en tant que fichier exécutable à
/usr/local/bin/composer
, avec le binaire Composer à/usr/local/bin/composer.phar
:Théorie de fonctionnement
Le script wrapper:
Le script est couplé à une installation OS X / Homebrew de PHP 5.5. Les chemins doivent être ajustés pour fonctionner avec d'autres versions de PHP et les dispositions de répertoires d'autres systèmes d'exploitation et gestionnaires de paquets. Notez également que certaines versions de sed n'ont pas besoin de l'argument chaîne vide après l'
-i
option.Utilitaire d'avertissement
Le script est simple, en ce sens qu'il fonctionne directement sur les principaux fichiers de configuration PHP, cependant c'est également un inconvénient: Xdebug sera également désactivé pour tous les scripts exécutés simultanément avec ce script.
Dans mon environnement de développement, c'est un compromis acceptable, étant donné que Composer est exécuté manuellement et seulement occasionnellement; toutefois, vous ne souhaiterez peut-être pas utiliser cette technique si vous exécutez Composer dans le cadre d'un processus de déploiement automatisé.
la source
Dans la plupart des cas, vous n'avez pas besoin de xdebug en mode CLI. Si cela vous convient, vous pouvez configurer cli et cgi différemment.
Donc, si vous rendez php-cli.ini et conf-cli.d près de la sortie du fichier php.ini, vous pouvez configurer cli et cgi différemment (pour cgi, ce serait php.ini et conf.d ). Ne mettez simplement pas xdebug.ini dans conf-cli.d.
la source
Si vous installez composer en utilisant brew sous OS X, vous pouvez utiliser cet alias:
la source
Ma solution rapide pour une installation macports, avec plusieurs versions de PHP, était d'écrire ce simple wrapper shell pour Composer:
Ensuite, exécutez toutes les commandes du compositeur comme ceci:
Désavantages:
Pas élégant, mais simple.
la source
$1…$7
… peut-être que c'est$@
ou quelque chose comme ça, vous devrez regarder.Création d'un alias pour composer pour désactiver xdebug et éviter les erreurs de mémoire:
Ajoutez cette ligne à votre ~ / .bash_profile
Redémarrez le terminal pour rendre le nouvel alias disponible.
la source
Voici ma solution rapide pour supprimer l'avertissement Xdebug sur la version PHP5-cli. J'ai supprimé le support de Xdebug pour PHP5-cli sur Ubuntu 14.04.
Désormais, plus d'avertissement Xdebug sur PHP5-cli.
la source
sudo phpdismod xdebug
serait la méthode préférée à la bruterm