Composer belleğin bitmesini gerektiriyor. PHP Önemli hata: 1610612736 baytlık izin verilen bellek boyutu tükendi


226

Aşağıdaki komutu çalıştırarak HWIOAuthBundle'ı projeme eklemeye çalışıyorum.

composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

HWIOAuthBundle github: https://github.com/hwi/HWIOAuthBundle

Composer'ı çalıştırmayı denediğimde bellek yetersiz hatası alıyorum.

Hwi / oauth-bundle için ^0.6.0@dev sürümünü kullanma php-http / guzzle6-adapter için ^1.2@dev sürümünü kullanma php-http / httplug-bundle için ^1.10@dev sürümünü kullanma ./composer.json güncellendi Paket bilgileriyle oluşturucu depolarını yükleme Bağımlılıkları güncelleme (required-dev dahil)

PHP Önemli hata: phar: ///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver içinde 1610612736 baytlık izin verilen bellek boyutu tükendi (67108864 bayt ayırmaya çalıştı). php satır 220

Önemli hata: phar: ///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php'de 1610612736 baytlık izin verilen bellek boyutu tükendi (67108864 bayt ayırmaya çalıştı) 220. satırda

Php.ini dosyamda memory_limit'i 2G olarak ayarlamayı denedim ama çalışmadı. Php.ini'mi çalıştırarak buldumphp -i | grep php.ini


3
Son zamanlarda bir besteci kendi kendine güncelleme yaptınız mı? Hata mesajınızdaki 1.4.2'nin 1.4.2 sürümünü gösterip göstermediğinden emin değilsiniz, ancak composer'ın en son sürümü 1.6.2'dir. Ve ne kadar fiziksel hafızanız var? VM veya bulut sunucusu mu?
2018

@Cerad Evet - Daha önce bir besteci kendi kendine güncelleme yaptım ve besteci sürümüm 1.6.2
Brian Chen

@Cerad bu yerel makinemde ve kesinlikle yeterli belleğe sahip olmalıyım
Brian Chen

Composer'ın daha önce sorunsuz çalıştığı projelerde bu sorunu yaşarken, çalıştırmanızı öneririm composer self-update --rollback. 1.8.6'ya geri döndüğümde duran v.1.9.3 ile bellek tükenmesine başladım.
karolus

Başka hiç kimse, koşmanın composer require1.5G'den fazla bellek kullanmasının çılgınca olduğunu düşünmüyor mu? Bunu ilk gördüğümde bestecide bir hata olması gerektiğini düşündüm. Bellek sınırını -1 olarak ayarlamak benim için işe yaradı ... ama nasıl olur da 1.5G yeterli olmaz? Bestecinin gerçekten çok ihtiyacı olabilir mi?
Daniel Howard

Yanıtlar:


340

Mevcut memory_limit değerini almak için şunu çalıştırın:

php -r "echo ini_get('memory_limit').PHP_EOL;"

php.iniDosyanızdaki sınırı artırmayı deneyin (ör. /etc/php5/cli/php.iniDebian benzeri sistemler için):

; Use -1 for unlimited or define an explicit value like 2G
memory_limit = -1

Veya bir komut satırı bağımsız değişkeniyle sınırı artırabilirsiniz:

php -d memory_limit=-1 composer.phar require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

Yüklenen php.ini dosyalarının konumunu almak için şunu deneyin:

php --ini

Başka bir hızlı çözüm:

php composer.phar COMPOSER_MEMORY_LIMIT=-1 require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

31
COMPOSER_MEMORY_LIMIT = -1 besteci güncellemesi benim için de çalışıyor.
Kishan Patel

1
Komut için teşekkürler php --ini! php 7.4'te clid için farklı bir php ini dosyanız (php-cli.ini) var
Vincent Decaux

4
kullanmak php -d memory_limit=-1 composer.phar installbenim için çalıştı. Teşekkürler!
Tomasz Kuter

1
memory_limit = -1 iyi bir çözüm mü? herhangi bir bellek tüketim sınırını kaldırıyor ve hepsini kullanabilir gibi görünüyor.
kamote ulalo

1
Windows'ta şunu kullanınSET COMPOSER_MEMORY_LIMIT=-1
Vincent Decaux

271

Benim durumumda bu paketi talep etmeye çalışıyordum ve PHP Fatal error: Allowed memory size of.

Bu şekilde çalıştırmayı kolay buldum ve PHP INI dosyasını güncellemenize gerek yok.

misal: COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel

Umarım bu birine yardımcı olur.


Ayrıca yardımcı oldu. PHP limitim 128MB idi, ancak hata mesajı PHP composer limitinin 1,5GB olduğunu söyledi (bu, bu özel durum için başka bir yerde yapılandırıldığı anlamına gelir). Yani php.ini'nin değiştirilmesi yardımcı olmadı, ancak bu yanıt yardımcı oldu.
Tom

73

Kılavuzdan başka bir çözüm :

Composer ayrıca COMPOSER_MEMORY_LIMITortam değişkeni tarafından tanımlanan bir bellek sınırına da uyar :

COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>

Veya benim durumumda

export COMPOSER_MEMORY_LIMIT=-1
composer <...>

12
Mac'te ~/.bash_profileeklemek için düzenledim alias composer="COMPOSER_MEMORY_LIMIT=-1 composer"ve bu benim için çözdü. Değişiklikten sonra dosyayı kaynak yaptığınızdan emin olun veya terminalinizi yeniden başlatın
nicholas.alipaz

42

Windows 10'da;

Git C:\ProgramData\ComposerSetup\bin

Düzenle: composer.batve memory_limit=-1aşağıda gösterildiği gibi son satırı ekleyin .

@echo OFF
:: in case DelayedExpansion is on and a path contains ! 
setlocal DISABLEDELAYEDEXPANSION
php -d memory_limit=-1 "%~dp0composer.phar" %*

Sorun çözüldü ;)


3
benim için en iyisi, neredeyse hepsi benim için çalışmadı.
krachleur

1
Ayrıca güncelleme zorunda besteci (= aynı -d memory_limit ekleyerek -1) .bat uzantısı olmadan dosyaya son çizgiye.
Maulik Gangani

Pencerelerde, konumun her zaman composer.batolması gerekmez C:\ProgramData\ComposerSetup\bin, ancak sanırım bu varsayılan konumdur. Ancak, birinin konumunu bulmak isterse, composer.batsadece şu wherekomutu çalıştırması gerekir : like where composer. Bu tam yeri gösterecektir.
rineez

26

Önceki cevapların hiçbiri setiçermediğinden, php.ini'yi değiştirmeden Windows'ta nasıl yapılacağını anlamam biraz zaman aldı, ama işte benim için işe yarayan şey:

set COMPOSER_MEMORY_LIMIT=-1
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

1
Bu, Windows ortamı için en iyi cevaptır. Teşekkürler :)
sykez

23

memory_limitComposer.phar dosyanızın tam yolunu belirterek ayarlayın ve benim durumumda şu komutla güncelleyin:

php -d memory_limit=-1 C:/wamp64/composer.phar update

6
Ayrıca COMPOSER_MEMORY_LIMIT=-1 composer.phar updateçalışır. Bakınız: getcomposer.org/doc/articles/…
mayid

5
ubuntu'da bunu kullanphp -d memory_limit=-1 /usr/bin/composer update
sinsi

COMPOSER_MEMORY_LIMIT = -1 besteci de benim için çalışıyor .. @mayid Teşekkürler. : +1
Kishan Patel

19

Yakın zamanda Composer'ın çok sayıda tarihsel etiketi olan paketlerde yüksek CPU + bellek kullandığı tespit edildi. Bkz # 7577 bestecisi / besteci

Bu soruna geçici bir çözüm kullanmak symfony/flexveya https://github.com/rubenrua/symfony-clean-tags-composer-plugin

composer global require rubenrua/symfony-clean-tags-composer-plugin

Sadece eklentinin global olarak kurulu olması mı gerekiyor? Yapacak başka bir şey yok mu? Lütfen bu eklentinin gerçekte ne yaptığını açıklayabilir misiniz? Bu gibi durumlarda composer tarafından bellek kullanımını azaltır mı?
rineez

17

Sadece bir besteci hatası almanız durumunda:

Giriş dosyası açılamadı: composer

Çalıştırmak:

php -d memory_limit=-1 /usr/local/bin/composer require ...

13

Bellek sınırını ve sürüm hatasını atlamak için aşağıdaki kodu kullanın:

COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs

11

Bazen sorun bestecinin bellek sınırındadır. Benim durumumda, php bellek sınırını artırmayı denedim ama yine de hatayı alıyorum. Bunu aşmak için kullanabilirsiniz COMPOSER_MEMORY_LIMIT=-1. Önek olarak kullanın:

COMPOSER_MEMORY_LIMIT=-1 composer require the/library

Gelecekte yeniden önek olarak eklemelisiniz.

Bu yardımcı olur umarım.


11

MacOs Catalina'daki bu hata için şu satırı kullanın:

php -d memory_limit=-1 /usr/local/bin/composer update --no-plugins

Bu satırı Symfony 5'i güncellemek için kullandım. Bu komut laravel 7 ile de çalıştı.


10

Öncesinde bulunan besteci komutlarını çalıştıran bir Homestead Laravel (serseri) sanal makinesindeki sorunu atladım COMPOSER_MEMORY_LIMIT=-1:

Örnekler

Composer'ı güncellemek için:

COMPOSER_MEMORY_LIMIT=-1 composer update

Bir paket kurmak için:

COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable

Tesekkurler dostum! Global olarak mı güncelleniyor yoksa sadece bu belirli komut için mi?
andcl

1
Bu özel komut için sadece geçici bir çözüm.
Davide Casiraghi

Bu çok yardımcı oldu - teşekkürler!
Bretanya

8

peki ya pencereler?

Windows 10 kullanıyorum ve bu komut benim için çalıştı,

php -d memory_limit=-1 "C:\ProgramData\ComposerSetup\bin\composer.phar" update


5

Composer'ı çalıştırırken belirli bir php Sürümü kullanabilirsiniz

Benim gibi, herhangi bir nedenle, bilgisayarınız 64 bit olmasına rağmen PHP 32 bit kullanıyorsanız , bu her zaman Composer'a ayrılan bellek miktarını sınırlayacaktır. Sorunumu şu şekilde çözdüm:

  • Bilgisayarınızın herhangi bir yerine 64 bitlik bir php sürümü kurun (C: / php64 olarak diyelim)
  • Bestecide (benim durumumda cygwin kullanarak) şunu çalıştırın:

COMPOSER_MEMORY_LIMIT=-1 C:/php64/php.exe ../composer.phar update


Bu öneri benim için çalıştı! Teşekkürler. Yeni 64bit sürümünü global olarak kullanmak için sistem ortamı değişkenini de güncellemeniz gerektiğine dikkat edin.
GentleGiant

4

Aynı sorun, "memory_limit" ile ilgili hiçbir şey işe yaramadı ama ..

composer self-update --2

.. sorunumu çözdü. (yükseltme: 1.10.17 -> 2.0.4)


3

Sadece bu konudaki durumumu paylaşmak istiyorum.

Sorun bağlamı:

  1. Besteciyi serseri bir kutuda çalıştırmak.
  2. Composer'ı çalıştırmayı denedikten sonra bu mesajı alıyordu "laravel-doctrine / orm: ~ 1.4.13":

Önemli hata: phar: ///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php'de 52. satırda 1610612736 baytlık izin verilen bellek boyutu tükendi (4096 bayt ayırmaya çalıştı) https: // getcomposer'ı kontrol edin . bellek yetersiz hatalarının nasıl işleneceği hakkında daha fazla bilgi için org / doc / makaleler / sorun giderme.md # bellek-limit- errors.

  1. Php.ini bellek sınırını -1 olarak ayarlamayı denediniz. (hala çalışmıyor).

Çözüm:

  1. Görünüşe göre composer.json ve composer.lock'umda bazı sorunlar var. $ Composer validate çalıştırıldı ve sonuç şuydu: "Kilit dosyası composer.json'daki en son değişikliklerle güncel değil, çalıştırmanız önerilir composer update."

  2. Bu yüzden $ composer güncellemesini çalıştırdım ve tüm bağımlılıklar çözüldü. Imho, bağımlılıkların bazı sorunları olduğunda, belki ağaç yapısı senkronize değildir, dolayısıyla bellek yetersizliği sorunu ortaya çıkar.

Umarım bu oradaki herkese yardımcı olur.


3

xampp tarafından Windows'ta az önce değiştirdim:

;memory_limit=512M 

php.ini'de:

memory_limit =-1

sonra Apache'yi xampp ile yeniden başlatın

sonuç bu:

; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit =-1
;memory_limit=512M

2
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52 Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

ayarlanan memory_limit için -1 benim için çalışıyor;) (vim /etc/php/7.2/cli/php.ini)


2

Bunu geçersiz kılmak ve yerel makinenizdeki sorunu düzeltmek için, php.iniyapılandırma dosyanızda aşağıdaki değişiklikleri yapabilirsiniz .

  1. php.iniYapılandırma dosyanızı bulmak için aşağıdaki komutu kullanabilirsiniz:php --ini

Bu komutu çalıştırdıktan sonra aşağıdaki gibi bir çıktı görmelisiniz:

Configuration File (php.ini) Path: /usr/local/etc/php/7.3
Loaded Configuration File:         /usr/local/etc/php/7.3/php.ini <---- note the path
Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.3/conf.d/ext-opcache.ini

Değiştirmek istediğimiz dosya Loaded Configuration'dır .

  1. Açık ve aramak memory_limitBelirleyebileceğiniz memory_limit = -1PHP süreçlerine belleğin sınırsız miktarda vermek veya ayarlayabilirsiniz512MB, 1G, 2G, 5G,....

    $ nano /usr/local/etc/php/7.3/php.ini

bulun ve ayarlayın:

$ memory_limit = -1 or memory_limit = 1G
  1. Dosyanızı kaydettikten sonra, dosyanıza mevcut bellek ayarlarını çıkaracak olan bu komutu çalıştırarak PHP değişikliklerini doğrulayabilirsiniz php.ini:

    php -r "echo ini_get ('memory_limit'). PHP_EOL;"

NOT: Kaydettikten sonra, yeni bellek çalışacaktır. Başka bir şey yapmanıza gerek yok.

Daha fazla bilgi: https://support.acquia.com/hc/en-us/articles/360036102614-Overriding-memory-limits-during-local-development-with-Composer


2

Macbook için: sudo nano ~/.bash_profilebash_profile alias composer="COMPOSER_MEMORY_LIMIT=-1 composer"dosyasını düzenlemek için komutu çalıştırın , ardından bu dosyaya ekleyin , ardından kaydedin ve çıkın.

Umarım bu sorunu çözecektir; Mutlu kodlamalar!


2

Mac php 7.4'te

Çalıştırmak

php --ini

Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext-opcache.ini,
/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini

Ek .ini dosyaları ayrıştırılırsa: memory_limit öğesinin

/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini

Jose Seie'nin yazdığı gibi, hafızayı

memory_limit = -1 or memory_limit = 1G

1

Daha hızlı ve hatırlaması daha kolay yeniden kullanım için, yararlı ve kabul edilen yanıtı burada yeniden kullanılabilir (zsh) takma adlar / işlevler halinde yoğunlaştırdım veya paketledim:

# composer high-memory
composermem() {
  php -r "echo ini_get('memory_limit').PHP_EOL;"
}
alias composerbig='COMPOSER_MEMORY_LIMIT=-1 composer $1'

( sistemde php composer.pharzaten diğer ad verilmiştir composer).


1

COMPOSER_MEMORY_LIMIT = -1 komutunu kullanarak bu sorunu çözdüm

Örnek: COMPOSER_MEMORY_LIMIT = -1 besteci, larval / ui gerektirir


0

Wampserver kullanıyorsanız, bu sorunu Windows altında çözmenin başka bir yolu. Gerçekten de wampserver seviyesinde, PHP'nin C: \ wamp64 \ bin \ php \ phpx.xx \ php.ini konumunda bulabileceğiniz iki php.ini dosyası ve Apache'ninki olabilir. konumu bulunan C: \ wamp64 \ bin \ apache \ apachex.xx \ bin \ php.ini . Bu dosyaların her ikisi de memory_limit parametresine sahiptir. Dolayısıyla, bu sorunu çözdüğünüzden emin olmak için, memory_limit = -1 parametresini her iki dosyada aynı anda ayarlamak daha iyidir .


Web memory_limitsunucusu için ayarlamanın Composer'ı çalıştırma üzerinde herhangi bir etkisi olmayacaktır. Ayrıca, memory_limit = -1tüm çalışan PHP işlemlerini bellek tükenmesine açtığından, global olarak kullanmak en son seçenek olmalıdır. Başlangıç ​​sürecine doğrudan eklenerek yalnızca ihtiyacınız olduğunda ayarlayın
Nico Haase

0

Satıcı klasörünün var olduğundan emin olmadan önce bir paket gerektirmediğinden emin olun.

Daha composer installönce yapıp yapmadığınızı kontrol edin . Depoyu makinenize klonlayabilirsiniz. Bu nedenle, yeni bir paket gerektirmeden önce eski paketleri yüklemelisiniz. Ya --profileda zamanlamayı ve bellek kullanım bilgilerini görmek için bu seçeneği composer komutunuza dahil etmek isteyebilirsiniz .


0

İçin centos7 kullanıcıları php.iniise/etc/php.ini/

  1. bu komutu çalıştır sudo vi /etc/php.ini
  2. değişken /memory_limitaramak için girinmemory_limit
  3. şuna değiştir memory_limit = -1
  4. tuşuna basın escve yazın :wq(yazın ve çıkın)
  5. sonra apache'yi yeniden başlat sudo systemctl restart httpd

1
windows'da xammp ile sadece değiştiriyorum; memory_limit = 512M php.ini'de memory_limit = -1 olarak
saber tabatabaee yazdi

Yalnızca composer'ı kullanmak için global bellek sınırını devre dışı bırakmamak gerekir.
emix

0

Ben php7.2 kullanıyorum ve boyut memory_limit = 512Mvarsayılan olarak ayarlandı . boyutu artırmak için bulmanız gerekir php.ini.

İçinde Wampbulunur C:\wamp64\bin\php\php7.2.23\php.ini. Lütfen ad klasörü olduğundan PHP sürümüne dikkat edin, benim durumumdaphp7.2.23

İçinde Laragon, C:\laragon\bin\php\php-7.2.23-Win32-VC15-x64\php.inibenim durumumda olduğu gibi bulunuyor.

Sınırsız alana izin vermek istemiyorsanız, sizin için uygun olan boyutu ayarlayabilirsiniz, benim durumumda yaptım memory_limit = 2G

sınırsız alana izin vermek istiyorsanız, şu şekilde değiştirebilirsiniz: memory_limit = -1


0

Bu sorunu php.ini aracılığıyla çözdüm, memory_limit = 2G değiştirdim


0

Php.ini dosyanızdaki sınırı artırmayı deneyin (ör. Debian benzeri sistemler için /etc/php5/cli/php.ini):

; Sınırsız için -1 kullanın veya 2G memory_limit = -1 gibi açık bir değer tanımlayın


1
Ekleyecek yeni bir şeyiniz yoksa lütfen mevcut cevapları tekrar etmeyin
Nico Haase,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.