PHP compositeur xdebug avertissement
Nouveau PHP. Travail sur un projet PHP et ont xdebug activé pour pouvoir déboguer mon 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 lance compositeur, il me donne un message d'avertissement disant
You are running composer with xdebug enabled. This has a major impact on
runtime performance.
Je ne veux pas désactiver l'extension xdebug quand je suis en train d'élaborer. Voulais juste confirmer que l'exécution de xdebug en environnement de dev devraient avoir aucun impact sur le compositeur de l'installation de bibliothèques/performance de l'application sur le serveur de production.
- Ne vous lancez
composer install
(pour instaling de production-les dépendances sur le serveur de production) dans un ssh-shell directement sur le serveur de production, ou en local sur votre machine? Ce dernier sera plus lente si XDebug est activée, mais vous pourriez avoir besoin XDebug pour, par exemple, PHPUnit...
Vous devez vous connecter pour publier un commentaire.
Il y a un immense impact de vient de charger l'extension Xdebug. Il ralentit le Compositeur renversé par 3x ou 4x, même lorsque la fonction de profilage n'est pas activé.
En d'autres termes: xdebug est inestimable pour le débogage, mais augmente la quantité de mémoire utilisée et le temps de traitement de Compositeur.
Comment faire pour désactiver l'extension Xdebug pour Compositeur fonctionne?
Ma suggestion est d'écrire une petite invocation d'assistance pour l'exécution de Compositeur.
Le helper est un bash ou batch script appelant PHP avec une coutume
php.ini
, spécialement configuré pour le Compositeur. Appelons cela:php.ini-composer
.Vous pouvez copier votre
php.ini
et de l'ajuster pour le Compositeur, en retrait de xdebug ou en commentaire, comme suit:;zend_extension = "/path/to/my/xdebug.so"
.Pendant que vous y êtes: le réglage de
memory_limit=-1
est utile, aussi.L'intégralité de la commande ressemble à Windows:
php.exe -c php.ini-composer composer.phar %*
Tout simplement de cloner l'idée de faire un script bash.
Et vous pouvez trouver la réponse à votre question dans le Compositeur de la FAQ.
https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer
Il a été ajouté/mis à jour il y a quelques heures.
Quelques solutions de rechange (au lieu d'utiliser séparée fichier ini) sont également mentionnées ici.
Comme avec des scripts web, s'attendre à la CLI d'exécution des scripts plus lent aussi.
Si vous avez besoin les ajoutés les performances d'exécution, vous pouvez désactiver l'extension XDebug sur CLI uniquement. Configurer votre installation de PHP afin qu'il utilise les différents fichiers ini pour les CLI et votre serveur, comme cette réponse suggère.
Les versions modernes de Compositeur peut contourner ayant l'extension XDebug activé par défaut pour le CLI SAPI. Il donne naissance à un nouveau processus PHP avec l'extension XDebug désactivé dans le cas où il est détecté.
Vous pouvez désactiver ce comportement en définissant la variable d'environnement suivante:
Trouvé dans la documentation: https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer
Pour résoudre ce problème, avant PHP 7 personnes suggèrent de commenter l'extension de votre php.fichier ini.
Cependant, dans PHP 7 ils ne sont plus là.
Au lieu de cela, nous utilisons la
phpdismod
commande.Le-s du pavillon dit de désactiver l'extension Xdebug pour le CLI SAPI (/etc/php/7.0/cli) et de ne pas FPM.
Et juste comme ça, le message d'avertissement devrait avoir disparu. Pas besoin de redémarrer PHP.
En plus de cela, il y a un plugin qui télécharge les paquets en parallèle pour accélérer le processus d'installation.
Créer un fichier nommé
php-composer.ini
quelque part avec le contenu suivant (le minimum de config php pour compositeur):Maintenant, créez un fichier nommé
cmz.bat
avec le contenu suivant. (modifier les chemins d'accès en conséquence)ajouter ce fichier au chemin de votre système ou de votre projet de racine.
Maintenant utiliser
cmz
au lieu decomposer
et vous ne verrez pas ce message et j'espère que le compositeur de vitesse serait augmenté.remarque: Certains paquets besoin des extensions php. vous devez les ajouter à
php-compsoer.ini
fichier, ou l'ajout d'--ignore-platform-reqs
passer àcmz.bat
fichierSur un nouveau téléchargement de Symfony 3.1 et PHP 7.0, vous pouvez exécuter les opérations suivantes (après avoir modifié pour inclure le chemin d'accès à votre compositeur.phar fichier):
Si vous avez des extra-fournisseurs pour votre
composer.json
fichier, vous pouvez trouver qu'ils ont une dépendance à une extension, vous devez inclure que par l'ajout d'-d extension=name_of_extension.so
à la liste.Ce qui se passe ici est la
-n
drapeau va avec PHP par défaut: il ne charge pas toutini
PHP les fichiers de configuration, de sorte que XDebug n'est jamais chargé. Alors, chacun des-d
flags permet de définir dynamiquement config valeurs, de sorte que vous pouvez inclure des extensions.-d extension=phar.so;extension=pdo.so;
ou-d extension=phar.so,pdo.so;