Для Composer требуется исчерпание памяти. PHP Неустранимая ошибка: допустимый размер памяти 1610612736 байт исчерпан

Я пытаюсь добавить HWIOAuthBundle в свой проект, выполнив следующую команду.

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

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

Когда я пытаюсь запустить composer require, я получаю сообщение об ошибке памяти.

Использование версии ^[email protected] для hwi/oauth-bundle Использование версии ^[email protected] для php-http/guzzle6-adapter Использование версии ^[email protected] для php-http/httplug-bundle./composer.json был обновлен Загрузка в репозитории composer информации о пакете Обновление зависимостей (включая require-dev)

Неустранимая ошибка PHP: допустимый объем памяти 1610612736 байт исчерпан (попытался выделить 67108864 байт) в phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver. PHP на линии 220

Неустранимая ошибка: допустимый объем памяти 1610612736 байт исчерпан (попытался выделить 67108864 байт) в phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php на линии 220

Я попытался установить memory_limit на 2G в моем файле php.ini, но не сработало. Я нашел свой php.ini, запустив php -i | grep php.ini php -i | grep php.ini

Ответ 1

Чтобы получить текущее значение 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

Ответ 2

Просто установите memory_limit указав полный маршрут вашего файла composer.phar, и обновите, в моем случае, командой:

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

Ответ 3

Другое решение из руководства:

Composer также учитывает ограничение памяти, определяемое переменной среды COMPOSER_MEMORY_LIMIT:

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

Или в моем случае

export COMPOSER_MEMORY_LIMIT=-1
composer <...>

Ответ 4

Недавно было установлено, что Composer потребляет много ресурсов ЦП и памяти для пакетов с большим количеством исторических тегов. Смотрите композитор/композитор # 7577

Обойти эту проблему можно с помощью symfony/flex или https://github.com/rubenrua/symfony-clean-tags-composer-plugin

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

Ответ 5

В моем случае я пытался потребовать этот пакет, и я получал PHP Fatal error: Allowed memory size of.

Мне было легко работать таким образом, и вам не нужно обновлять файл INI PHP.

пример: COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel

Надеюсь, это поможет кому-то.

Ответ 6

Вот еще один способ решить эту проблему под 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 в обоих файлах одновременно.

Ответ 7

Работал с той же проблемой.. если вы не хотите постоянно изменять ограничение памяти, вы можете сделать это временно, как это (работает на OSX)

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

Ответ 8

экспорт COMPOSER_MEMORY_LIMIT = -1

Это решило все мои проблемы

СПАСИБО

Ответ 9

  Вы можете использовать определенную версию php при запуске Composer

Если, как и я, по какой-то причине вы используете PHP 32 бита, даже если ваш компьютер 64-битный, это всегда будет ограничивать объем памяти, выделяемый Composer. Я решил свою проблему следующим образом:

  • Установите 64-битную версию php где-нибудь на вашем компьютере (скажем, в C: /php64)
  • В composer (используя cygwin в моем случае) запустите:

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