Próbuję dodać HWIOAuthBundle do mojego projektu, uruchamiając poniższe polecenie.
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
HWIOAuthBundle github: https://github.com/hwi/HWIOAuthBundle
Kiedy próbuję uruchomić narzędzie Composer, otrzymuję błąd braku pamięci.
Używam wersji ^0.6.0@dev dla hwi / oauth-bundle Używam wersji ^1.2@dev dla php-http / guzzle6-adapter Używam wersji ^1.10@dev dla php-http / httplug-bundle ./composer.json zostało zaktualizowane Ładowanie repozytoriów kompozytorów z informacjami o pakiecie Aktualizowanie zależności (w tym require-dev)
Błąd krytyczny PHP: wyczerpano dozwolony rozmiar pamięci 1610612736 bajtów (próbowano przydzielić 67108864 bajtów) w phar: ///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver. php w linii 220
Błąd krytyczny: wyczerpano dozwolony rozmiar pamięci 1610612736 bajtów (próbowano przydzielić 67108864 bajtów) w phar: ///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php na linii 220
Próbowałem ustawić memory_limit na 2G w moim pliku php.ini, ale nie zadziałało. Znalazłem php.ini, uruchamiającphp -i | grep php.ini
źródło
composer self-update --rollback
. Zacząłem doświadczać wyczerpania pamięci w wersji 1.9.3, które ustało, gdy powróciłem do wersji 1.8.6.composer require
może zużywać więcej niż 1,5 GB pamięci? Kiedy pierwszy raz to zobaczyłem, pomyślałem, że to błąd w narzędziu Composer. Ustawienie limitu pamięci na -1 zadziałało dla mnie ... ale dlaczego 1,5G to za mało? Czy kompozytor naprawdę może tak wiele potrzebować?Odpowiedzi:
Aby uzyskać bieżącą wartość memory_limit, uruchom:
php -r "echo ini_get('memory_limit').PHP_EOL;"
Spróbuj zwiększyć limit w swoim
php.ini
pliku (np./etc/php5/cli/php.ini
Dla systemów podobnych do Debiana):; Use -1 for unlimited or define an explicit value like 2G memory_limit = -1
Możesz też zwiększyć limit za pomocą argumentu wiersza polecenia:
php -d memory_limit=-1 composer.phar require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
Aby załadować lokalizację plików php.ini, spróbuj:
Kolejne szybkie rozwiązanie:
php composer.phar COMPOSER_MEMORY_LIMIT=-1 require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
źródło
php --ini
! w php 7.4 masz inny plik php ini (php-cli.ini) dla clidphp -d memory_limit=-1 composer.phar install
zadziałało dla mnie. Dzięki!SET COMPOSER_MEMORY_LIMIT=-1
W moim przypadku próbowałem wymagać tego pakietu i otrzymywałem plik
PHP Fatal error: Allowed memory size of
.Uruchamianie w ten sposób jest dla mnie łatwe i nie musisz aktualizować pliku PHP INI.
przykład:
COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel
Mam nadzieję, że to komuś pomoże.
źródło
Inne rozwiązanie z instrukcji :
Composer przestrzega również limitu pamięci zdefiniowanego przez
COMPOSER_MEMORY_LIMIT
zmienną środowiskową:COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>
Albo w moim przypadku
export COMPOSER_MEMORY_LIMIT=-1 composer <...>
źródło
~/.bash_profile
aby dodaćalias composer="COMPOSER_MEMORY_LIMIT=-1 composer"
i to rozwiązało problem. Pamiętaj, aby pobrać plik po zmianie lub zrestartować terminalW systemie Windows 10;
Iść do
C:\ProgramData\ComposerSetup\bin
Edytuj:
composer.bat
i dodajmemory_limit=-1
ostatnią linię, jak pokazano poniżej.@echo OFF :: in case DelayedExpansion is on and a path contains ! setlocal DISABLEDELAYEDEXPANSION php -d memory_limit=-1 "%~dp0composer.phar" %*
Problem rozwiązany ;)
źródło
composer.bat
nie musi byćC:\ProgramData\ComposerSetup\bin
zawsze, ale myślę, że jest to lokalizacja domyślna. Jeśli jednak ktoś chce znaleźć lokalizacjęcomposer.bat
wystarczy uruchomićwhere
polecenie: likewhere composer
. To pokaże dokładną lokalizację.Ponieważ żadna z poprzednich odpowiedzi nie zawierała odpowiedzi
set
, zajęło mi trochę czasu, aby dowiedzieć się, jak to zrobić w systemie Windows bez zmiany pliku php.ini, ale oto, co zadziałało dla mnie:set COMPOSER_MEMORY_LIMIT=-1 composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
źródło
Ten sam problem, nic związanego z „memory_limit” nie działało, ale ...
composer self-update --2
.. rozwiązał mój problem. (aktualizacja: 1.10.17 -> 2.0.4)
źródło
composer self-update --2
- nie zadziałało i wystąpił błąd.composer self-update --stable
wykonał pracę :)Po prostu ustaw
memory_limit
pełną trasę swojego pliku composer.phar i zaktualizuj, w moim przypadku za pomocą polecenia:php -d memory_limit=-1 C:/wamp64/composer.phar update
źródło
COMPOSER_MEMORY_LIMIT=-1 composer.phar update
Działa również . Zobacz: getcomposer.org/doc/articles/…php -d memory_limit=-1 /usr/bin/composer update
Niedawno stwierdzono, że Composer zużywa dużo procesora i pamięci w pakietach, które mają wiele historycznych znaczników. Zobacz: composer / composer # 7577
Rozwiązaniem tego problemu jest użycie
symfony/flex
lub https://github.com/rubenrua/symfony-clean-tags-composer-plugincomposer global require rubenrua/symfony-clean-tags-composer-plugin
źródło
Na wypadek, gdyby pojawił się błąd kompozytora z:
biegać:
php -d memory_limit=-1 /usr/local/bin/composer require ...
źródło
Aby pominąć limit pamięci i błąd wersji, użyj poniższego kodu:
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs
źródło
Ominąłem problem w maszynie wirtualnej Homestead Laravel (vagrant), na której uruchamiane są polecenia kompozytora poprzedzone
COMPOSER_MEMORY_LIMIT=-1
:Przykłady
Aby zaktualizować Composer:
COMPOSER_MEMORY_LIMIT=-1 composer update
Aby zainstalować pakiet:
COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable
źródło
W przypadku tego błędu w macOS Catalina i macOS Big Sur użyj tego wiersza:
php -d memory_limit=-1 /usr/local/bin/composer update --no-plugins
Użyłem tej linii do aktualizacji w Symfony 5. To polecenie działało również z laravel 7.
źródło
Czasami problem tkwi w limicie pamięci kompozytora. W moim przypadku próbowałem zwiększyć limit pamięci php, ale nadal otrzymałem błąd. Możesz użyć,
COMPOSER_MEMORY_LIMIT=-1
aby to obejść. Użyj go jako przedrostka:COMPOSER_MEMORY_LIMIT=-1 composer require the/library
W przyszłości musisz go ponownie poprzedzić.
Mam nadzieję że to pomoże.
źródło
co z oknami?
używam systemu Windows 10 i to polecenie działało dla mnie,
php -d memory_limit=-1 "C:\ProgramData\ComposerSetup\bin\composer.phar" update
źródło
Wersja zapoznawcza Composer 2.0 jest już dostępna: https://github.com/composer/composer/releases Naprawiono problem. Możesz skonfigurować podgląd za pomocą
composer self-update --preview
EDYCJA: Composer 2 ze strojeniem pamięci zwolnionym
źródło
Jeśli, tak jak ja, z jakiegoś powodu używasz 32-bitowego PHP, mimo że twój komputer ma 64 bity, zawsze ograniczy to ilość pamięci przydzielonej Composerowi. Rozwiązałem swój problem w ten sposób:
COMPOSER_MEMORY_LIMIT=-1 C:/php64/php.exe ../composer.phar update
źródło
Chcę tylko podzielić się moją sytuacją w tej sprawie.
Kontekst problemu:
Rozwiązanie:
Najwyraźniej moje pliki composer.json i composer.lock mają pewne problemy. Uruchomiono polecenie $ composer validate, a wynik był następujący: „Plik blokady nie jest aktualny z najnowszymi zmianami w pliku composer.json, zaleca się uruchomienie
composer update
”.Uruchomiłem więc aktualizację $ composer i rozwiązałem wszystkie zależności. Imho, kiedy zależności mają pewne problemy, być może budowa drzewa nie jest zsynchronizowana, stąd problem braku pamięci.
Mam nadzieję, że to pomoże każdemu.
źródło
Aby to zmienić i rozwiązać problem na komputerze lokalnym, możesz wprowadzić następujące zmiany w
php.ini
pliku konfiguracyjnym.php.ini
plik konfiguracyjny, możesz użyć następującego polecenia:php --ini
Po uruchomieniu tego polecenia powinieneś zobaczyć wynik podobny do następującego:
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
Plik, który chcemy zmienić, to Loaded Configuration .
Otwórz i wyszukaj plik,
memory_limit
który możesz ustawić,memory_limit = -1
aby zapewnić nieograniczoną ilość pamięci dla procesów PHP lub możesz ustawić512MB, 1G, 2G, 5G,....
$ nano /usr/local/etc/php/7.3/php.ini
zlokalizuj i ustaw:
$ memory_limit = -1 or memory_limit = 1G
Po zapisaniu pliku możesz zweryfikować zmiany PHP, uruchamiając to polecenie, które wyświetli bieżące ustawienia pamięci w
php.ini
pliku:php -r "echo ini_get ('memory_limit'). PHP_EOL;"
UWAGA: Po zapisaniu nowa pamięć będzie działać. Nie musisz robić nic więcej.
Więcej informacji: https://support.acquia.com/hc/en-us/articles/360036102614-Overriding-memory-limits-during-local-development-with-Composer
źródło
Na komputerze Mac php 7.4
biegać
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
Jeśli przeanalizowano dodatkowe pliki .ini: memory_limit musi zostać zmieniony w
/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
Jak pisze Jose Seie, ustaw pamięć na
memory_limit = -1 or memory_limit = 1G
źródło
w windows by xampp właśnie zmieniłem:
;memory_limit=512M
w php.ini na:
memory_limit =-1
następnie zrestartuj Apache przez xampp
oto wynik:
; Maximum amount of memory a script may consume ; http://php.net/memory-limit memory_limit =-1 ;memory_limit=512M
źródło
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.
ustaw memory_limit na -1 działa dla mnie;) (vim /etc/php/7.2/cli/php.ini)
źródło
W przypadku Macbooka: uruchom polecenie,
sudo nano ~/.bash_profile
aby edytować bash_profile, a następnie dodajalias composer="COMPOSER_MEMORY_LIMIT=-1 composer"
ten plik, a następnie zapisz i zakończ.Mam nadzieję, że to rozwiąże problem; Miłego kodowania!
źródło
Skondensowałem lub spakowałem użyteczną i akceptowaną odpowiedź tutaj w aliasy / funkcje wielokrotnego użytku (zsh), w celu szybszego i łatwiejszego do zapamiętania ponownego wykorzystania:
# composer high-memory composermem() { php -r "echo ini_get('memory_limit').PHP_EOL;" } alias composerbig='COMPOSER_MEMORY_LIMIT=-1 composer $1'
(
php composer.phar
ma już alias docomposer
w systemie).źródło
Rozwiązałem ten problem za pomocą tego polecenia COMPOSER_MEMORY_LIMIT = -1
Przykład: COMPOSER_MEMORY_LIMIT = -1 kompozytor wymaga larval / ui
źródło
Upewnij się, że pakiet nie jest wymagany, zanim upewnisz się, że folder dostawcy istnieje.
Sprawdź, czy zrobiłeś to
composer install
wcześniej. Możesz po prostu sklonować repozytorium na swój komputer. Musisz więc zainstalować stare pakiety, zanim będziesz potrzebować nowego. Możesz też dołączyć tę opcję--profile
do polecenia kompozytora, aby wyświetlić informacje o czasie i wykorzystaniu pamięci.źródło
Oto inny sposób rozwiązania tego problemu w systemie Windows, jeśli używasz Wampserver. Rzeczywiście, na poziomie wampserver są dwa pliki php.ini , PHP, które można znaleźć w lokalizacji C: \ wamp64 \ bin \ php \ phpx.xx \ php.ini i Apache, które mogą być znaleziono w lokalizacji C: \ wamp64 \ bin \ apache \ apachex.xx \ bin \ php.ini . Oba te pliki mają parametr memory_limit. Aby mieć pewność rozwiązania tego problemu, lepiej jest ustawić parametr memory_limit = -1 w obu plikach naraz.
źródło
memory_limit
serwera WWW nie będzie miało żadnego wpływu na działanie Composera. Ponadto używaniememory_limit = -1
globalne powinno być ostatnią opcją, ponieważ powoduje to wyczerpanie pamięci dla wszystkich działających procesów PHP. Lepiej ustaw to tylko wtedy, gdy tego potrzebujesz, bezpośrednio związane z procesem startowymUżywam php7.2 i
memory_limit = 512M
domyślnie ustawiony jest rozmiar . aby zwiększyć rozmiar, musisz zlokalizowaćphp.ini
.W
Wamp
, znajduje się wC:\wamp64\bin\php\php7.2.23\php.ini
. Proszę uważać na wersję PHP, ponieważ jest to folder z nazwą, w moim przypadku mamphp7.2.23
W programie
Laragon
znajduje sięC:\laragon\bin\php\php-7.2.23-Win32-VC15-x64\php.ini
tak, jak w moim przypadku.Jeśli nie chcesz mieć nieograniczonej przestrzeni, możesz ustawić dowolny rozmiar, który jest dla Ciebie wygodny, w moim przypadku tak zrobiłem
memory_limit = 2G
jeśli chcesz mieć nieograniczoną przestrzeń, możesz zmienić na
memory_limit = -1
źródło
Bieganie
composer dump-autoload
rozwiązuje to za mnie.źródło
idź i znajdź php.ini w swoim katalogu PHP w przypadku xampp będzie on w xampp / PHP i wewnątrz pliku php.ini aktualizacja memory_limit: 512M do 2048M
źródło
memory_limit
już 2G