2017-01-25 1 views
1

Lorsque je tente d'installer un package à Contao en utilisant le client Composer je reçois une erreur:PHP sur une erreur de mémoire ne reflète pas la mise en memory_limit dans php.ini

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 134217728 bytes) in phar://D:/wamp/www/myproject/composer/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220

Je suis vraiment confus. Ma limite de mémoire PHP est fixée à 512M. phpinfo() le confirme. Mais 1073741824 est un gigaoctet! Et ce n'est pas encore suffisant, comme si le script ne tenait absolument pas compte de la limite de la mémoire PHP (où?) Et même qu'un gigaoctet ne suffisait pas!?!?

Que puis-je faire? Je lis à propos de RLimitMEM, mais je ne trouve pas un tel paramètre sur WAMPServer.

Répondre

0

J'ai trouvé la réponse.

J'ai cherché le projet memory_limit et a découvert que le client compositeur tente de définir une limite de mémoire dans system/modules/!composer/src/Runtime.php Il y a cette ligne: @ini_set('memory_limit', '1024M'); je l'ai changé pour @ini_set('memory_limit', '2048M'); doublant la mémoire disponible, et cela a fonctionné.

+0

Je dois commenter ici que je pense qu'il est absolument effroyable qu'un script PHP utilise autant de mémoire. Je ne comprends pas. –

+1

C'est la partie résolvant la dépendance de Composer. En raison du succès de la plate-forme de gestion des paquets du compositeur, il existe actuellement un paquet de paquets dans une multitude de versions. En fonction de vos paramètres 'composer.json' (' minimum-stability'), cela entraîne une grande complexité, ce qui nécessite beaucoup de mémoire. Voir https://github.com/composer/composer/issues/1898 et d'autres tickets par exemple. – fritzmg

1

Il est recommandé d'utiliser le mode détaché pour le client compositeur. Si vous disposez d'un environnement CLI approprié, vous aurez aucune limite de mémoire et pas de temps d'exécution maximum. De plus, ces deux limites peuvent être contrôlées via des arguments de ligne de commande.

Toutefois, cela ne fonctionne pas dans tous les environnements d'hébergement. Voir cette entrée wiki pour plus de détails: https://github.com/contao-community-alliance/composer-client/wiki/Execution-modes