-1
votes

Compositeur PHP Mémoire épuisante ... pourquoi? Qu'est-ce qui se passe?

Tentative d'initialisation d'un projet PHP / Laravel (en exécutant compositeur installer ), j'ai rencontré exactement le même problème que décrit ici: Où trouver ce client.php Laravel

J'ai essayé de mettre à jour le package qui n'a pas bien interagi avec une version PHP plus récente, en utilisant Compositeur nécessite avec la tentative de mise à niveau du package incriminé, mais ce n'est pas bien allé: xxx

J'ai lu dans la documentation Comment je peux augmenter le limite de mémoire (oui - le plus facilement en réglant compositeur_memory_limit variable d'environnement avant d'exécuter Compositeur Comme tant de mention), mais avant de le faire, je voudrais comprendre quelque chose de mal Avec le projet d'épuration de 1536 Mo de limite de mémoire, et si oui, comment comprendre et résoudre le problème? Plus précisément, qu'est-ce que cette commande a fait cette commande que de remplacer la version de la version dans le fichier compositeur.json ? Ce qui pourrait aller mal si je modifie manuellement le fichier compositeur.json et exécutez composez l'installation à partir de la table propre (après effacement du répertoire fournisseur / et quoi que ce soit d'autre est écrit dans le répertoire de projet) - la version est conflictuelle avec d'autres dépendances détectées?


5 commentaires

Si vous le mettez dans Compositeur.json , fonctionne-t-il? Essayez de supprimer le Vendeur Dir et Compositeur Installez . Avez-vous des scripts post-mise à jour dans Compositeur.json?


Je n'ai pas la solution pour "pourquoi", mais vous pouvez atténuer cela en ajoutant une "variable d'environnement" à votre commande CLI: compositeur_memory_limit = -1 Compositeur ...


Il n'y a rien de mal à votre configuration. C'est juste que le compositeur a en fait besoin d'une charge de mémoire pour résoudre tout l'arborescence de dépendance.


Stackoverflow.com/a/62043521/2188922 Cette réponse peut vous donner des amplifictions pour organiser le swap pour surmonter ce problème


@Timelewis ... Bien sûr, semble évident, mais je n'ose tout simplement pas faire cela, car je dois utiliser l'ordinateur (Mac) pour un autre travail aussi et que 16 Go de RAM presque épuisé et que SSD a presque pleinement épuisé Juste aujourd'hui même sans une telle tentative.


3 Réponses :


-4
votes

Essayez de supprimer votre fichier de fournisseur, puis de continuer à installer le compositeur


4 commentaires

L'auteur dit que son compositeur est à court de mémoire, ce qui est un cas commun. Supprimer le répertoire du fournisseur ne vous aidera pas.


Cette réponse a manqué évidemment quelques détails.


Suppression du répertoire du fournisseur (et tout ce qui apparaît après compositeur installer ) + Modification du compose.json + rerunning compositeur installer est à nouveau ce que je souhaite essayer Si j'ai besoin de faire face à cela à nouveau. Vous êtes sur les mêmes pistes que je pensais, je pense.


Veuillez ajouter quelques explications à votre réponse, de sorte que d'autres puissent en apprendre - pourquoi cela devrait-il fournir une expérience différente?



2
votes

Plus précisément, qu'est-ce que cette commande a fait cette commande que de remplacer la version requise dans le fichier compositeur.json ?

Il essaie également d'installer une nouvelle version de la dépendance et de le faire pour vérifier si cela est possible (la nouvelle version n'entrait pas en conflit avec d'autres dépendances) et sur quoi d'autre doit être effectuée (Installation / mise à niveau des sous-produits). En pratique, cela signifie une arborescence compliquée de dépendance de reconstruction, qui est un processus compliqué et nécessite beaucoup de mémoire.

Édition manuelle Compositeur.json ne vous donne rien, car il n'installera pas cette dépendance. Vous devez toujours exécuter Mise à jour du compositeur pour le faire, ce qui nécessitera de la reconstruction de l'arborescence de dépendance et de résulter les mêmes problèmes de mémoire qu'avec la commande nécessite


5 commentaires

J'ai oublié d'expliquer le "code> compose" / code> installation à partir de la table propre après l'édition du fichier ... (Je vais probablement essayer cela plus tard, la question a été écrite avec le souhait de mieux comprendre le fond de cette échec.)


(1.6 Go pour le bâtiment et la vérification du graphique de dépendance semble vaincu grose, je ne comprends pas pourquoi cela devrait arriver.)


Dans ma compréhension, Mise à jour du compositeur mettra à jour tous les paquets Qu'est-ce que je ne veux pas faire pour une application en cours de production avec des centaines de milliers d'utilisateurs. Pas sans tests globaux.


compositeur installer installera des dépendances à partir de composer.lock (précédemment calculé pour ancien compositeur.json ), donc vos modifications dans Compositeur.json sera ignoré. Mise à jour du Compositeur est en effet une mauvaise idée dans ce cas, je l'avais mentionné que de pointer que l'édition manuelle de compositeur.json ne vous aidera pas avec les problèmes de mémoire.


Vous pouvez essayer de mettre à jour le compositeur à la dernière version: 2.0 Direction générale a de grandes améliorations de la consommation de mémoire.



-1
votes

Quand je rencontre un problème comme celui-ci, je laisse temporairement compositeur avoir une mémoire illimitée: xxx


0 commentaires