Я пытаюсь добавить HWIOAuthBundle в свой проект, выполнив приведенную ниже команду.
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
HWIOAuthBundle github: https://github.com/hwi/HWIOAuthBundle
Когда я пытаюсь запустить composer require, я получаю сообщение об ошибке нехватки памяти.
Using version ^0.6.0@dev for hwi/oauth-bundle Using version ^1.2@dev for php-http/guzzle6-adapter Using version ^1.10@dev for php-http/httplug-bundle ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev)
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 67108864 bytes) in phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 67108864 bytes) in phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220
Я попытался установить memory_limit на 2G в моем файле php.ini, но это не сработало. Я нашел свой php.ini, запустив php -i | grep php.ini
@Cerad Да, я делал самообновление композитора раньше, и моя версия композитора - 1.6.2
@Cerad, это на моей локальной машине, и у меня определенно должно быть достаточно памяти
При возникновении этой проблемы в проектах, где ранее Composer работал нормально, я бы посоветовал запустить composer self-update --rollback. Я начал сталкиваться с нехваткой памяти с v.1.9.3, которая прекратилась при откате до 1.8.6.
Никто другой не думает, что это безумие, что работающий composer require может использовать более 1,5 ГБ памяти? Когда я впервые увидел это, я подумал, что это ошибка в композиторе. Установка лимита памяти на -1 сработала для меня ... но как, черт возьми, 1.5G недостаточно? Неужели композитору столько нужно?
См. Это ошибки ограничения памяти






Чтобы получить текущее значение memory_limit, запустите:
php -r "echo ini_get('memory_limit').PHP_EOL;"
Попробуйте увеличить лимит в вашем файле php.ini (например, /etc/php5/cli/php.ini для систем, подобных Debian):
; Use -1 for unlimited or define an explicit value like 2G
memory_limit = -1
Или вы можете увеличить лимит с помощью аргумента командной строки:
php -d memory_limit=-1 composer.phar require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
Чтобы получить расположение загруженных файлов php.ini, попробуйте:
php --ini
Еще одно быстрое решение:
php composer.phar COMPOSER_MEMORY_LIMIT=-1 require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
COMPOSER_MEMORY_LIMIT = -1 у меня тоже работает обновление композитора.
Спасибо за команду php --ini! в php 7.4 у вас есть другой файл php ini (php-cli.ini) для clid
использование php -d memory_limit=-1 composer.phar install сработало для меня. Спасибо!
memory_limit = -1 хорошее решение? похоже, что он снимает ограничение на потребление памяти и может использовать всю ее.
@kamoteulalo php -d влияет только на запущенную команду, btw memory_limit помогает предотвратить плохо написанные сценарии, которые съедают всю доступную память на сервере, поэтому, если ваш код хорошо написан, можно не бояться установить memory_limit на unlimited. но все же это не рекомендуется.
В Windows используйте SET COMPOSER_MEMORY_LIMIT=-1
Спасибо за быстрое решение Адам и Винсент
Для меня внутри бродячей машины и при использовании composer как части другого скрипта он работает, добавляя COMPOSER_MEMORY_LIMIT=-1 к команде.
При использовании php и композитора внутри контейнера docker dev это то, что у меня сработало docker-compose exec -e COMPOSER_MEMORY_LIMIT=-1 <container_id> composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
Просто установите memory_limit, указав полный маршрут вашего файла composer.phar, и обновите, в моем случае с помощью команды:
php -d memory_limit=-1 C:/wamp64/composer.phar update
Также COMPOSER_MEMORY_LIMIT=-1 composer.phar update работает. См .: getcomposer.org/doc/articles/…
на ubuntu используйте этот php -d memory_limit=-1 /usr/bin/composer update
COMPOSER_MEMORY_LIMIT = -1 у меня тоже работает композитор .. @mayid Спасибо. : +1
Вот еще один способ решить эту проблему под Windows, если вы используете Wampserver. Действительно, на уровне wampserver есть два файла php.ini: файл PHP, который можно найти в местоположении C: \ wamp64 \ bin \ php \ phpx.xx \ php.ini, и файл Apache, который можно найти в местоположении C: \ wamp64 \ bin \ apache \ apachex.xx \ bin \ php.ini. Оба эти файла имеют параметр memory_limit. Так что для уверенного решения этой проблемы лучше установить параметр memory_limit = -1 сразу в обоих файлах.
Установка memory_limit для веб-сервера не повлияет на запуск Composer. Кроме того, глобальное использование memory_limit = -1 должно быть самым последним вариантом, поскольку при этом все запущенные процессы PHP открываются до нехватки памяти. Лучше установите его Только, когда он вам нужен, напрямую привязанный к процессу запуска
Недавно было обнаружено, что Composer потребляет много ресурсов ЦП и памяти для пакетов с большим количеством исторических тегов. См. композитор / композитор # 7577
Чтобы решить эту проблему, используйте symfony/flex или https://github.com/rubenrua/symfony-clean-tags-composer-plugin.
composer global require rubenrua/symfony-clean-tags-composer-plugin
Просто нужно установить плагин глобально? Больше ничего не поделаешь? Не могли бы вы объяснить, что на самом деле делает этот плагин? Уменьшает ли использование памяти композитором в таких случаях?
Еще одно решение от руководство по эксплуатации:
Composer также соблюдает ограничение памяти, определяемое переменной среды COMPOSER_MEMORY_LIMIT:
COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>
Или в моем случае
export COMPOSER_MEMORY_LIMIT=-1
composer <...>
На Mac я отредактировал ~/.bash_profile, чтобы добавить alias composer = "COMPOSER_MEMORY_LIMIT=-1 composer", и это решило проблему для меня. Обязательно укажите источник файла после изменения или перезапустите терминал.
идеальное решение (не нужно менять конфигурацию php)
В моем случае я пытался потребовать этот упаковка, и я получал PHP Fatal error: Allowed memory size of.
Мне показалось, что так легко работать, и вам не нужно обновлять INI-файл PHP.
пример: COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel
Надеюсь, это кому-то поможет.
Тоже помогло. Мой лимит PHP был 128 МБ, но в сообщении об ошибке говорилось, что ограничение PHP composer составляет 1,5 ГБ (что означает, что он настроен в другом месте для этого конкретного случая). Так что модификация php.ini не помогла, но этот ответ помог.
You can use a specific php Version when running Composer
Если, как и я, по какой-то причине вы используете PHP 32 бита, даже если ваш компьютер 64-битный, это всегда будет ограничивать объем памяти, выделяемой Composer. Я решил свою проблему так:
COMPOSER_MEMORY_LIMIT=-1 C:/php64/php.exe ../composer.phar update
Это предложение сработало для меня! Спасибо. Обратите внимание, что вам также необходимо обновить переменную системной среды, чтобы использовать новую 64-битную версию во всем мире.
В Windows 10;
Перейти C:\ProgramData\ComposerSetup\bin
Отредактируйте: composer.bat и добавьте memory_limit=-1 в последнюю строку, как показано ниже.
@echo OFF
:: in case DelayedExpansion is on and a path contains !
setlocal DISABLEDELAYEDEXPANSION
php -d memory_limit=-1 "%~dp0composer.phar" %*
Задача решена ;)
лучший для меня, почти все у меня не работали.
Мне также пришлось обновить файл композитор без расширения .bat (добавив тот же -d memory_limit = -1) в последнюю строку.
В Windows местоположение composer.bat не обязательно всегда должно быть C:\ProgramData\ComposerSetup\bin, но я предполагаю, что это местоположение по умолчанию. Однако, если кто-то хочет найти местоположение composer.bat, просто нужно запустить команду where: например, where composer. Это покажет точное местоположение.
перейдите и найдите php.ini внутри вашего каталога PHP, в случае xampp он будет внутри xampp / PHP и внутри файла php.ini обновите memory_limit: 512M до 2048M
Пожалуйста, добавьте еще несколько пояснений к своему ответу - OP заявляет, что он уже установил memory_limit на 2G
Убедитесь, что пакет не требуется, прежде чем убедиться, что папка поставщика существует.
Проверьте, делали ли вы composer install раньше. Возможно, вы просто клонировали репозиторий на свой компьютер. Итак, вам необходимо установить старые пакеты, прежде чем требовать новый. Или вы можете включить эту опцию --profile в свою команду композитора, чтобы увидеть информацию о времени и использовании памяти.
Просто хочу поделиться своей ситуацией по этому поводу.
Контекст проблемы:
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.
Решение:
По-видимому, у моих composer.json и composer.lock есть некоторые проблемы.
Запустил $ composer validate, и результат был:
«Файл блокировки не обновлен с учетом последних изменений в composer.json, рекомендуется запустить composer update».
Итак, я запустил обновление $ composer, и все зависимости разрешены. Imho, когда у зависимостей есть некоторые проблемы, возможно, построение дерева не синхронизировано, отсюда проблема нехватки памяти.
Надеюсь, это поможет кому-нибудь.
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.
установить memory_limit в -1 работает для меня;) (vim /etc/php/7.2/cli/php.ini)
Поскольку ни один из предыдущих ответов не включал set, мне потребовалось немного времени, чтобы понять, как это сделать в Windows, не изменяя php.ini, но вот что сработало для меня:
set COMPOSER_MEMORY_LIMIT=-1
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
Это лучший ответ для среды Windows. Спасибо :)
Работаем на windows 10, спасибо
Я использую php7.2, а размер по умолчанию установлен на memory_limit = 512M.
чтобы увеличить размер, вам нужно найти php.ini.
В Wamp он находится в C:\wamp64\bin\php\php7.2.23\php.ini. Пожалуйста, следите за версией PHP, так как это папка с именем, в моем случае у меня php7.2.23
В Laragon он находится в C:\laragon\bin\php\php-7.2.23-Win32-VC15-x64\php.ini, как и в моем случае.
Если вы не хотите разрешать неограниченное пространство, вы можете установить любой размер, который вам удобен, в моем случае я сделал memory_limit = 2G
если вы хотите разрешить неограниченное пространство, вы можете перейти на memory_limit = -1
Чтобы переопределить это и исправить проблему на локальном компьютере, вы можете внести следующие изменения в файл конфигурации php.ini.
php.ini, вы можете использовать следующую команду: php --iniПосле выполнения этой команды вы должны увидеть следующий результат:
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
Файл, который мы хотим изменить, - это Загруженная конфигурация.
Откройте и найдите memory_limit, вы можете настроить memory_limit = -1 на предоставление неограниченного объема памяти процессам PHP, или вы можете установить 512MB, 1G, 2G, 5G,....
$ nano /usr/local/etc/php/7.3/php.ini
найдите и установите:
$ memory_limit = -1 or memory_limit = 1G
После сохранения файла вы можете проверить изменения PHP, выполнив эту команду, которая выведет текущие настройки памяти в ваш файл php.ini:
php -r "echo ini_get ('memory_limit'). PHP_EOL;"
ПРИМЕЧАНИЕ: После сохранения новая память будет работать. Больше ничего делать не нужно.
Более подробная информация: https://support.acquia.com/hc/en-us/articles/360036102614-Overriding-memory-limits-during-local-development-with-Composer
На всякий случай вы получите ошибку композитора:
Could not open input file: composer
запустить:
php -d memory_limit=-1 /usr/local/bin/composer require ...
Я сжал или упаковал полезный и принятый ответ здесь в многоразовые (zsh) псевдонимы / функции для более быстрого и легкого запоминания повторного использования:
# composer high-memory
composermem() {
php -r "echo ini_get('memory_limit').PHP_EOL;"
}
alias composerbig='COMPOSER_MEMORY_LIMIT=-1 composer $1'
(php composer.phar уже имеет псевдоним composer в системе).
Для Macbook:
запустите команду sudo nano ~/.bash_profile, чтобы отредактировать bash_profile, затем добавьте alias composer = "COMPOSER_MEMORY_LIMIT=-1 composer" в этот файл, затем сохраните и выйдите.
Надеюсь, это решит проблему; Удачного кодирования!
Запуск composer dump-autoload решает эту проблему для меня.
Иногда проблема заключается в ограничении памяти композитора. В моем случае я попытался увеличить лимит памяти php, но все равно получил ошибку.
Вы можете использовать COMPOSER_MEMORY_LIMIT=-1, чтобы обойти это.
Используйте его как префикс:
COMPOSER_MEMORY_LIMIT=-1 composer require the/library
В будущем вам придется снова добавить префикс.
Надеюсь это поможет.
Если вы работаете с Windows CLI, это правильный ответ.
Для этой ошибки в macOS Catalina и macOS Big Sur используйте эту строку:
php -d memory_limit=-1 /usr/local/bin/composer update --no-plugins
Я использовал эту строку для обновления на Symfony 5. Эта команда также работала с laravel 7.
У меня это сработало! php -d memory_limit = -1 composer.phar требует laravel-frontend-presets / tailwindcss --dev
Чтобы пропустить ограничение памяти и ошибку версии, используйте следующий код:
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs
На Mac php 7.4
запустить
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
Если проанализированы дополнительные файлы .ini: memory_limit необходимо изменить в
/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
Как пишет Хосе Сейе, установите память на
memory_limit = -1 or memory_limit = 1G
как насчет окон?
Я использую Windows 10, и эта команда у меня сработала,
php -d memory_limit=-1 "C:\ProgramData\ComposerSetup\bin\composer.phar" update
в окнах от xampp я только что изменил:
;memory_limit=512M
в php.ini в:
memory_limit =-1
затем перезапустите Apache с помощью xampp
вот результат:
; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit =-1
;memory_limit=512M
Это работает, чувак, спасибо, чувак, 15 января 2021 года.
Я решил эту проблему с помощью этой команды COMPOSER_MEMORY_LIMIT = -1
Пример: COMPOSER_MEMORY_LIMIT = -1 композитору требуется larval / ui
Предварительная версия Composer 2.0 уже доступна: https://github.com/composer/composer/releases
Исправленная проблема для меня. Вы можете настроить предварительный просмотр с composer self-update --preview
Обновлено: выпущен Composer 2 с настройкой памяти
Я обошел проблему в виртуальной машине Homestead Laravel (vagrant), на которой выполняются команды композитора, которым предшествует COMPOSER_MEMORY_LIMIT=-1:
Примеры
Чтобы обновить Composer:
COMPOSER_MEMORY_LIMIT=-1 composer update
Чтобы установить пакет:
COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable
Спасибо чувак! Он обновляется глобально или только для этой конкретной команды?
Просто временное решение для этой конкретной команды.
Это работает для меня
Спасибо, амиго! Лучшее решение для win10
Я использую laravel 8, и мне пришлось добавить env перед командой к чему-то вроде этого env COMPOSER_MEMORY_LIMIT = -1 composer update
Та же проблема, ничего, связанное с "memory_limit", не работало, но ..
composer self-update --2
..решил мою проблему. (обновление: 1.10.17 -> 2.0.4)
Для тех composer self-update --2 - не работал и произошла ошибка. composer self-update --stable сделал свою работу :)
Спасибо, мужик, реши мою проблему
другие решения не сработали, надеюсь, вы написали свое ... вы сделали мой день, спасибо
Мерси !, вы спасли мою работу.
только это сработало для меня
В моем случае:
Windows 10 и Docker Desktop работают:
docker-compose -f .docker/docker-compose.yml exec php env COMPOSER_MEMORY_LIMIT=-1 composer require fideloper/proxy
Вам просто нужно увеличить лимит памяти для файла "php.ini", чтобы решить проблему.
найдите "memory_limit" в файле php.ini.
просто измените значение memory_limit на 2G, как показано ниже
;http://php.net/memory-limit
memory_limit=2G
чтобы переместить файл php с помощью команды ниже.
php --ini
Это похоже на дубликат других ответов. Вы хотите добавить что-нибудь новое?
Я подумал, что публикация решения моей проблемы может кому-то помочь. вместо того, чтобы найти альтернативное новое решение.
В моем случае мне не хватало раздела подкачки. Более подробная информация: https://github.com/composer/composer/issues/7348#issuecomment-414178276
для Centos 7 используйте:
COMPOSER_MEMORY_LIMIT=-1 composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
Вы в последнее время занимались самообновлением композитора? Не уверен, что 1.4.2 в вашем сообщении об ошибке указывает на версию 1.4.2, но последняя версия композитора - 1.6.2. А сколько у вас физической памяти? Это виртуальная машина или облачный сервер?