web-dev-qa-db-fra.com

PHP composer avertissement xdebug

Nouveau sur PHP. Travailler sur un projet PHP et avoir xdebug activé pour pouvoir déboguer mes applications php. Le serveur de production n'a pas xdebug activé car il est géré par une autre équipe. Sur ma machine locale, lorsque je exécuter composer il me donne un avertissement disant

You are running composer with xdebug enabled. This has a major impact on 
runtime performance.

Je ne veux pas désactiver xdebug lorsque je développe. Je voulais juste confirmer que l'exécution de xdebug dans un environnement de développement devrait avoir pas d'impact sur le composer installation des bibliothèques/performances de l'application sur le serveur de production).

23
user275157

Je ne souhaite pas désactiver xdebug lorsque je développe. Je voulais juste confirmer que l'exécution de xdebug dans un environnement de développement ne devrait avoir aucun impact sur le composer installation des bibliothèques/performances du application sur le serveur de production.

Le chargement de Xdebug a un impact énorme. Il ralentit le Composer run down de 3x ou 4x, même lorsque la fonction de profilage n'est pas activée.

En d'autres termes: xdebug est inestimable pour le débogage, mais augmente la mémoire utilisée et le temps de traitement de Composer.


Comment désactiver Xdebug pour Composer s'exécute?

Ma suggestion est d'écrire un petit assistant d'invocation pour exécuter Composer.

L'assistant est un script bash ou batch appelant PHP avec un php.ini Personnalisé, spécialement configuré pour Composer. Appelons-le: php.ini-composer.

Vous pouvez copier votre php.ini Actuel et l'ajuster pour l'exécution Composer, en supprimant xdebug ou en le commentant, comme ceci: ;zend_extension = "/path/to/my/xdebug.so".

Pendant que vous y êtes: définir memory_limit=-1 Est également utile.

La commande complète ressemble à ceci sous Windows: php.exe -c php.ini-composer composer.phar %*

Clonez simplement l'idée d'un script bash.


Et vous pouvez trouver la réponse complète à votre question dans la FAQ Composer.

https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer

Il a été ajouté/mis à jour il y a quelques heures à peine.


Certaines alternatives (au lieu d'utiliser un fichier ini séparé) sont également mentionnées ici .

26
Jens A. Koch

Comme pour les scripts Web, attendez-vous à ce que les scripts CLI s'exécutent également plus lentement.

Si vous avez besoin des performances d'exécution supplémentaires, vous pouvez désactiver XDebug sur CLI uniquement. Définissez votre installation PHP afin qu'elle utilise différents fichiers ini pour CLI et votre serveur, comme cette réponse le suggère.

5
Revenant

Les versions modernes de Composer peuvent contourner l'activation de XDebug par défaut pour CLI SAPI. Il engendre un nouveau processus PHP avec l'extension XDebug désactivée au cas où il le serait). détectée.

Vous pouvez désactiver ce comportement en définissant la variable d'environnement suivante:

COMPOSER_ALLOW_XDEBUG=1

Trouvé cela dans la documentation: https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer

3
ojrask

Pour résoudre ce problème, avant PHP 7 personnes suggèrent de mettre en commentaire l'extension de votre fichier php.ini. Cependant, dans PHP 7 ils n'y sont plus.

À la place, nous utilisons la commande phpdismod.

Sudo phpdismod -s cli xdebug

L'indicateur -s lui indique de désactiver Xdebug pour la CLI SAPI (/etc/php/7.0/cli) et non FPM.

Et juste comme ça, le message d'avertissement devrait être parti. Pas besoin de redémarrer PHP.

En plus de cela, il y a un plugin qui télécharge les packages en parallèle pour accélérer le processus d'installation.

2
iniravpatel

Sur un nouveau téléchargement de Symfony 3.1 et PHP 7.0, vous pouvez exécuter ce qui suit (après l'avoir modifié pour inclure le chemin d'accès à votre fichier composer.phar):

php -n -d extension=json.so -d extension=phar.so -d extension=pdo.so -d extension=ctype.so /path/to/composer update

Si vous avez des fournisseurs supplémentaires pour votre composer.json, vous constaterez peut-être qu'ils dépendent d'une extension. Vous devez donc l'inclure en ajoutant -d extension=name_of_extension.so à la liste.

Ce qui se passe ici est le -n l'indicateur va de pair avec PHP par défaut - il ne charge aucun ini PHP fichier de configuration, donc XDebug n'est jamais chargé. Ensuite, chaque du -d flags vous permet de définir dynamiquement des valeurs de configuration, vous pouvez donc inclure des extensions.

1
Dan Blows

Créez un fichier nommé php-composer.ini quelque part avec le contenu suivant (la configuration php minimale pour le compositeur):

extension_dir = "D:/php/ext/" ;according to your system
extension=php_openssl.dll
memory_limit=-1 ;optional

Créez maintenant un fichier nommé cmz.bat avec le contenu suivant. (modifiez les chemins en conséquence)

@ECHO OFF
php -c "D:\php-composer.ini" "C:\ProgramData\ComposerSetup\bin\composer.phar" %*

ajoutez ce fichier à votre chemin système ou à la racine de votre projet. Maintenant, utilisez cmz au lieu de composer et vous ne verrez pas ce message et nous espérons que la vitesse composer serait augmentée.

note: Certains packages nécessitent des extensions php spécifiques. vous devez les ajouter à php-compsoer.ini fichier ou ajout --ignore-platform-reqs basculer vers cmz.bat fichier

1
PHPst