web-dev-qa-db-fra.com

Limite de mémoire de mise à jour du compositeur

Je dois exécuter la mise à jour du composeur sur mon hébergement, je me connecte donc avec ssh et j'essaie de lancer comand:

composer update

dans le dossier/www où j'ai instalation de laravel et du compositeur

mais je reçois une erreur:  enter image description here

en contact avec mon fournisseur d'hébergement, ils me disent de lancer la commande:

php -d memory_limit=512M composer update

J'exécute cette commande mais je reçois: "Impossible d'ouvrir le fichier: composeur" 

Que faire? Quelle est la solution ici?

10
Andrew

Lorsque vous exécutez composer update, le système d'exploitation examinera les chemins d'accès configurés et tentera de localiser un fichier exécutable portant ce nom.

Lors de l'exécution de php composer update, la chaîne composer est traitée comme un paramètre de PHP, qui n'est recherché dans aucun des chemins. Vous devez fournir le chemin complet pour pouvoir l'exécuter.

Lancer which composer vous indiquera où le système d'exploitation trouve l'exécutable du compositeur, puis vous utiliserez simplement le chemin complet dans la commande PHP:

$>which composer
/usr/local/bin/composer

$>php -d memory_limit=512M /usr/local/bin/composer update
...

Notez que 512 Mo pourrait être trop peu. Ma perception est que cela prendra avec plaisir 1 Go ou plus, en fonction du nombre de dépendances que vous utilisez et de la variété de versions que vous autorisez théoriquement, c'est-à-dire que si vous autorisez Symfony ~2.3, vous obligez Composer à gérer un plus grand nombre de versions possibles par rapport à en utilisant ~2.7.

Notez également qu'exécuter Composer sur la machine de production n'est pas la meilleure idée. Vous devez avoir accès à Github, peut-être fournir des informations d’accès, disposer des outils VCS et vous pourrez facilement casser votre site si l’un des serveurs d’hébergement distants est hors ligne pendant la mise à jour. Il est préférable d’utiliser Composer sur un système de déploiement qui effectue toute la préparation, puis déplace tous les fichiers sur le serveur de production.

28
Sven

Je suis confronté à des problèmes avec composer car il utilise toute la mémoire disponible, puis le processus est mis à mort (le message de sortie est "Killed")

SO, je cherchais une solution pour limiter l’utilisation de la mémoire par le compositeur.

J'ai essayé (de @Sven réponses)

$ php -d memory_limit=512M /usr/local/bin/composer update

Mais ça n'a pas marché parce que 

"Composer augmente en interne le paramètre memory_limit à 1,5 Go."

-> C'est du compositeur du site officiel.

Puis j'ai trouvé une commande qui fonctionne: 

$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update

Bien que 512 ne soit pas suffisant!

Source: https://www.agileana.com/blog/composer-memory-limit-troubleshooting/

1
Diego Favero

Vous pouvez changer la valeur memory_limit dans votre php.ini

Essayez d'augmenter la limite dans votre fichier php.ini

Utilisez -1 pour illimité ou définissez une valeur explicite telle que 2G

memory_limit = -1

Remarque: Composer augmente en interne le paramètre memory_limit à 1,5 Go.

Lire la documentation getcomposer.org

1
Vladimir Salguero