Composer: ErrorException: proc_open (): fork не удалось - невозможно выделить память в phar

Созданный на 26 июл. 2012  ·  81Комментарии  ·  Источник: composer/composer

ErrorException: proc_open (): fork failed - Невозможно выделить память в phar: ///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php на строка 943

Стек вызовов:
0,0523 765208 1. {main} () /var/www/workspace/MyProject/build/composer/composer.phar:0
0,0528 763216 2. require ('phar: ///var/www/workspace/MyProject/build/composer/composer.phar/bin/composer') /var/www/workspace/MyProject/build/composer/composer.phar: 15
0,0830 3504584 3. Composer \ Console \ Application-> run () phar: ///var/www/workspace/MyProject/build/composer/composer.phar/bin/composer: 13
0,0865 3865984 4. Symfony \ Component \ Console \ Application-> run () phar: ///var/www/workspace/MyProject/build/composer/composer.phar/src/Composer/Console/Application.php: 66
31.9725 246198552 5. Symfony \ Component \ Console \ Application-> renderException () phar: ///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application .php: 113
31.9726 246199624 6. Symfony \ Component \ Console \ Application-> getTerminalWidth () phar: ///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application .php: 771
31.9726 246199784 7. Symfony \ Component \ Console \ Application-> getSttyColumns () phar: ///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application . php: 848
31.9727 246202984 8. proc_open () phar: ///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application. php: 943
31.9728 246204736 9. Composer \ Util \ ErrorHandler :: handle () phar: ///var/www/workspace/MyProject/build/composer/composer.phar/src/Composer/Util/ErrorHandler. php: 0

Самый полезный комментарий

Я предполагаю, что это не сам композитор, но в любом случае: микроэкземпляры на ec2 не имеют _любой_ памяти подкачки (по умолчанию), поэтому ОС запускает процессы, если у них заканчивается память. Лучшее решение вместо обновления до небольшого (потому что это стоит дороже) - создать файл подкачки (по крайней мере, временный).

Например.

# /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
# /sbin/mkswap /var/swap.1
# /sbin/swapon /var/swap.1

613M намного меньше, и помните, что не только PHP потребляет его. Не думаю, что в этом можно винить композитора. Может кто-нибудь закрыть этот вопрос?

Все 81 Комментарий

Чтобы решить эту проблему, мне нужно было убедиться, что доступно более 1 гигабайта памяти.

У меня тоже была эта проблема, но увеличение PHP memory_limit решило проблему.

Тоже самое:

PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:943
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 943, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(943): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(848): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(771): Symfony\Component\Console\Application->getTerminalWidth()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(113): Symfony\Component\Console\Application->renderException(Object(ErrorException), Object(Symfo in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 943

Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 943

ErrorException: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 943

Call Stack:
    0.0001     620632   1. {main}() /usr/local/bin/composer:0
    0.0032     727952   2. require('phar:///usr/local/bin/composer/bin/composer') /usr/local/bin/composer:15
    0.0187    3168240   3. Composer\Console\Application->run() phar:///usr/local/bin/composer/bin/composer:13
    0.0211    3485008   4. Symfony\Component\Console\Application->run() phar:///usr/local/bin/composer/src/Composer/Console/Application.php:66
   13.2099  135622120   5. Symfony\Component\Console\Application->renderException() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:113
   13.2099  135622968   6. Symfony\Component\Console\Application->getTerminalWidth() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:771
   13.2099  135623064   7. Symfony\Component\Console\Application->getSttyColumns() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:848
   13.2099  135625208   8. proc_open() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:943
   13.2100  135626416   9. Composer\Util\ErrorHandler::handle() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:943

Подробнее о системе:

php -v
PHP 5.3.10 (cli) (built: Feb 20 2012 16:56:36) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans

Получал ту же ошибку два раза, но могу сказать: она работала около часа назад (без каких-либо изменений в настройке), а теперь, с третьей попытки, она снова работает (без каких-либо изменений).

$ php -v
PHP 5.4.4-4~precise+1 (cli) (built: Aug  6 2012 13:01:46) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

Обновить:

Хорошо, забудь это. Я забыл снова включить подкачку ... На машине действительно _ не хватило памяти ...

Была такая же проблема при попытке выполнить развертывание на инстансе Amazon AWS EC2 Micro. Эти экземпляры имеют всего 613 МБ памяти, поэтому композитору не удается выделить достаточно памяти для запуска обновления. Обновление до небольшого экземпляра с 1,7 ГБ общей памяти решило проблему.

У меня такая же проблема .... неужели композитору нужно столько памяти? : -O

Я предполагаю, что это не сам композитор, но в любом случае: микроэкземпляры на ec2 не имеют _любой_ памяти подкачки (по умолчанию), поэтому ОС запускает процессы, если у них заканчивается память. Лучшее решение вместо обновления до небольшого (потому что это стоит дороже) - создать файл подкачки (по крайней мере, временный).

Например.

# /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
# /sbin/mkswap /var/swap.1
# /sbin/swapon /var/swap.1

613M намного меньше, и помните, что не только PHP потребляет его. Не думаю, что в этом можно винить композитора. Может кто-нибудь закрыть этот вопрос?

У людей, использующих микро-экземпляры, больше не должно возникать проблем после обновления композитора и обновления файла блокировки до нового формата, см. # 1109. Если у вас есть проблемы с памятью не только при установке, но и при установке, см. № 600

Я снова сталкиваюсь с этой проблемой. Вот мой дамп:

PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:969
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///vagrant...', 969, Array)
#1 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(969): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(874): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(798): Symfony\Component\Console\Application->getTerminalWidth()
#4 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(113): Symfony\Component\Console\Application->re in phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php on line 969

Выполнение пробного прогона с профилированием возвращает следующую информацию об использовании памяти:

Memory usage: 25.95MB (peak: 67.15MB), time: 9.21s

Привет,

Просто предположение: вы запускаете это на AWS-micro? У вас есть своп
включен?

С Уважением,
Себастьян

2012/12/20 Дэн Хорриган [email protected]

Я снова сталкиваюсь с этой проблемой. Вот мой дамп:

Неустранимая ошибка PHP: неперехваченное исключение 'ErrorException' с сообщением 'proc_open (): fork failed - Cannot allocate memory' в phar: ///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component / Консоль / Приложение. php: 969
Трассировки стека:

0 [внутренняя функция]: Composer \ Util \ ErrorHandler :: handle (2, 'proc_open (): fo ...', 'phar: /// vagrant ...', 969, массив)

1 phar: ///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php (969): proc_open ('stty -a | grep ...', Массив, NULL, NULL, NULL, массив)

2 phar: ///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php (874): Symfony \ Component \ Console \ Application-> getSttyColumns ()

3 phar: ///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php (798): Symfony \ Component \ Console \ Application-> getTerminalWidth ()

4 phar: ///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php (113): Symfony \ Component \ Console \ Application-> re in phar: ///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php в строке 969

Выполнение пробного прогона с профилированием возвращает следующую информацию об использовании памяти:

Использование памяти: 25,95 МБ (пиковая: 67,15 МБ), время: 9,21 с

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/composer/composer/issues/945#issuecomment -11587234.

github.com/KingCrunch

@dhorrigan ой, согласно трассировке стека, похоже, что фатальная ошибка была вызвана при рендеринге исключения (поскольку он использует proc_open для проверки ширины вашего терминала). Похоже, это не предел памяти php, а скорее закончилась память машины, поэтому я бы предложил очистить другие вещи и запустить его с установкой вместо обновления, если вы можете запустить обновление где-нибудь еще, у которого больше памяти. установка из файла блокировки использует очень мало памяти.

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

Если честно, 67 МБ не такие уж и большие. Я понимаю, в чем проблема, если он выходит из строя, но в наши дни пара сотен мегабайт пиковой памяти - это не так уж и много;)

Я обнаружил проблему, на виртуальной машине доступно только 6 МБ памяти (из 512 МБ), так что да. Ха-ха, я увеличиваю его до 1 ГБ памяти. Надо было сначала это проверить. Продолжать.

@Seldaek Микроэкземпляры имеют 590 МБ и по умолчанию не имеют свопа. Для игры это отлично работает, но как только какое-то приложение требует немного больше, оно полностью ломается. Итак, как упоминалось ранее: создание подкачки улавливает это :) Это занимает всего 10 или 20 МБ больше.

https://github.com/composer/composer/issues/945#issuecomment -8552757

@KingCrung прав. Просто добавил своп в мой микро-экземпляр EC2, как описано здесь .

Теперь обновление зависимостей работает как шарм.

@andremaha Отлично! Спасибо!! :)

У меня тоже такая проблема. 1 ГБ Vagrant на Macbook Air 4 ГБ. Бывает, даже когда я ограничиваю обновление конкретным поставщиком.

Неустранимая ошибка PHP: неперехваченное исключение 'ErrorException' с сообщением 'proc_open (): fork failed - Cannot allocate memory' в phar: /// usr / local / bin / composer / vendor / symfony / console / Symfony / Component / Console / Application . php: 1033
Трассировки стека:

0 [внутренняя функция]: Composer \ Util \ ErrorHandler :: handle (2, 'proc_open (): fo ...', 'phar: /// usr / loc ...', 1033, массив)

1 phar: ///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php (1033): proc_open ('stty -a | grep ...', массив, NULL, NULL, NULL, массив)

2 phar: ///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php (911): Symfony \ Component \ Console \ Application-> getSttyColumns ()

3 phar: ///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php (876): Symfony \ Component \ Console \ Application-> getTerminalDimensions ()

4 phar: ///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php (810): Symfony \ Component \ Console \ Application-> getTerminalWidth ()

Можно решить эту проблему с помощью vagrant halt && vagrant up && vagrant ssh, затем снова запустив.

Использование памяти: 102,39 МБ (пиковая: 427,97 МБ), время: 104,79 с

@adamsmeat, спасибо! Я использую ваше решение для своего экземпляра DO

@adamsmeat - Я могу подтвердить на стандартной машине с Ubuntu 12.04 512MB Digital Ocean, что ваше решение именно то, что было нужно. Symfony2 установлен и работает должным образом.

@adamsmeat, который спас мне жизнь, просто добавил 512 МБ пространства подкачки на моем микро-экземпляре EC2, и проблема решена.

Я тоже столкнулся с этой проблемой.Это было в среде использования vagrant box, начальная память была 512M, и проблема была решена после увеличения до 2048G.

столкнулся с этой проблемой с использованием фрагмента Digital Ocean 512 МБ ... пришлось https://github.com/composer/composer/issues/945#issuecomment -8552757

то же самое здесь @ prodev42

Я попытался скопировать composer.lock на рабочий сервер и работает. с командой

php composer.phar --verbose install

@paparts Похоже, вы не используете версию composer.lock ? Практическое правило: для приложений версионизируйте его, для библиотек - нет. Вы не должны запускать update в действующей системе, потому что очень вероятно, что рано или поздно появится пакет, который сломает ваше приложение, без того, чтобы вы проверили его локально. composer.lock и composer.phar install гарантируют, что установлены именно те пакеты в этих версиях, для которых вы разрабатываете свое приложение.

Я не заметил, что фреймворк, который я использовал, указал composer.lock в списке игнорирования. Спасибо что подметил это.

Была проблема сегодня с микро-экземпляром EC2. Увеличение объема памяти PHP memory_limit до 512M исправило это.

это было бы хорошо? В цифровом океане память составляет всего 512 МБ, и использование PHP для использования такой памяти, вероятно, приведет к повреждению вашей собственной виртуальной машины.

о, совсем нет. Не нужно упоминать, что это не рабочий сервер.

Я устанавливал пакет, который требовал symfony / event-dispatcher, поэтому теперь я больше не могу установить ни один пакет из-за ошибки выше: S

Получил, когда включил opcache.enable_cli в php cli ini

@ younes0 Это довольно расплывчатое описание. Вы прочитали здесь всю дискуссию? Обычно это происходит из-за того, что вам не хватает памяти без включения подкачки, обычно в довольно небольшом облачном экземпляре или виртуальной машине.

@KingCrunch в моем случае это не было связано с нехваткой памяти, я получил ошибку, описанную opcache.enable_cli php, установленным на On (VM или нет)

Та же ошибка.

У меня есть капля digitalocean с 1 ГБ ОЗУ.

Когда я запускаю php composer.phar update он съедает всю доступную оперативную память, а затем выдает исключение.

В моем cli/php.ini у меня memory_limit = -1 .

Если решение заключается в обновлении до капли с большей оперативной памятью только для композитора, я сделаю php composer.phar update на своем локальном компьютере, а затем загрузю файлы на свой vps.

Просто включите composer.lock

@paparts Спасибо, работает.

Я делаю php composer.phar update на локальной машине, затем загружаю composer.lock на VPS и делаю php composer.phar install

@moldcraft Другое решение описано где-то выше: просто создайте своп-память, это довольно медленно, но, по крайней мере, предотвращает ошибки OOM.

@KingCrunch Другое решение описано где-то выше

Будет хорошо, если @yooper обновит описание проблемы найденными решениями.

Совет: трюк с подкачкой также работает для локальных виртуальных машин VirtualBox, работающих с Vagrant.

Я пытаюсь вставить с помощью ajax, но это не работает, ошибка: неперехваченное исключение: недостаточно памяти ..
что-нибудь для этого ..

@sivagurupr Я не знаю, о чем вы говорите, но у меня такое ощущение, что это не связано с этой проблемой. Composer (CLI) не имеет никаких возможностей ajax: confused: Однако в конце и после прочтения комментариев «out of memory» должно быть самоочевидным: wink:

Любая ошибка в этом коде ....

12 марта 2015 г., 16:08, Себастьян Кребс [email protected]
написал:

@sivagurupr https://github.com/sivagurupr Я не знаю, что вы
говорю, но у меня такое ощущение, что это не связано с этой проблемой.
Composer (CLI) не имеет никаких возможностей ajax [image:: confused:]
Однако в конце и после прочтения комментариев «нехватка памяти» следует
быть самоочевидным [image:: wink:]

-
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/composer/composer/issues/945#issuecomment -78456750.

Я столкнулся с этой проблемой при установке http://github.com/sabre/xml на машину Vagrant. Однако мне удалось исправить это, включив подкачку, используя приведенный выше пример.

У меня такая же ошибка, но с большим экземпляром: 4 ГБ ОЗУ и 4 ГБ подкачки. Свободная оперативная память никогда не исчерпывается, не говоря уже о доступной / кэшированной оперативной памяти, а своп не затрагивается!

Это первый запуск обновления композитора на этой новой машине, CentOS / CloudLinux 7.1.

Есть идеи? Пожалуйста?

У меня была такая же ошибка в моем Vagrant Box. Когда я получил ошибку, у меня было 2 ГБ оперативной памяти. Я расширил память до 4 ГБ, и все заработало. Но все же странно, что ему нужно столько таранов.

Я снова столкнулся с этой проблемой, и добавление composer.lock не сработало. Но вместо этого я попытался использовать пространство подкачки вместо увеличения объема памяти. Статья о digitalocean довольно классная https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps

Я тоже столкнулся с проблемой:

PHP Warning:  proc_open(): fork failed - Cannot allocate memory in phar:///home/...../sculpin.phar/vendor/symfony/console/Symfony/Component/Console/Application.php on line 974

Мой memory_limit установлен на -1

мой free вывод:

             total       used       free     shared    buffers     cached
Mem:          1992       1331        660        122          8        217
-/+ buffers/cache:       1105        886
Swap:          255        237         18

У меня тоже была эта проблема, но увеличение PHP memory_limit решило проблему.

я тоже

Возникла та же проблема с memory_limit установленным на -1. Единственное, что у меня сработало, это перезагрузка машины.

Как добавить своп в Ubuntu 14.04
https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

Эта статья помогла мне для экземпляра с 512 МБ ОЗУ.

[Решено] Если вы запускаете это на виртуальной машине, остановите виртуальную машину либо командой vagrant halt, либо постепенной остановкой.

Измените размер ОЗУ в соответствии с вашим приложением. В моем случае я обновил память до 1024 МБ.
по умолчанию это было 256 МБ;

т.е. это сработало

Остановите службу mysql httpd или nginx и снова запустите

Запустить композитор

И перезапустите службы

Привет @sergiohermes

Это работает только тогда, когда nginx и / или mysql по совпадению потребляют столько памяти, сколько упускает композитор. Кроме того, в большинстве случаев остановка основных служб, вероятно, не вариант. Вы действительно должны инвестировать в память, либо физически, либо в виде раздела / файла подкачки. Все это уже описано в этой ветке.

Я понимаю, в любом случае это был способ без замены.
Самый подходящий вариант - создать своп. Без сомнения.
Взглянув на "centos", я нашел интересную ссылку.

https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers

Я верю добавлю эту ветку.

О, я использую своп, решай, спасибо

Вы можете избежать этого, увеличив размер памяти из файла php.ini , что является неправильным вариантом. Лучше удалите кеш и пересоберите пакеты.

Delete composer cache: `sudo rm -R ~/.composer`
Delete vendor folder: `sudo rm -R vendor`
Rebuild the vendor packages: `composer update`

Или меня можно сделать:

/ bin / dd if = / dev / zero of = / var / swap.1 bs = 1M count = 1024
/ sbin / mkswap /var/swap.1
/ sbin / swapon /var/swap.1

@ mohitg-bs Думаю, ты что-то напутал

  • Удаление файлов не освобождает оперативную память
  • Речь идет не о PHP memory_limit , а о (виртуальной) памяти всей системы. Нет настройки ini, которая может создать вам RAM.

Я решил ту же проблему в Vagrant.

Я легко увеличил память на Vagrant Virtual Machine http://www.josheaton.org/increase-memory-vagrant-virtual-machine/
затем я увеличил значение memory_limit
и удалите кеш композитора: sudo rm -R ~ / .composer
и наконец бродячая перезагрузка .

У меня была такая же проблема с Virtual Box, работающим через Vagrant.
Исправлено увеличением плунжера VBox.

Изменение конфигурации с vb.memory = 512 на vb.memory = 1024

Я добавил память подкачки, и это решило мою проблему.

У вас закончилась память подкачки, попробуйте это

/ bin / dd if = / dev / zero of = / var / swap.1 bs = 1M count = 1024
/ sbin / mkswap /var/swap.1
/ sbin / swapon /var/swap.1

Чтобы добавить файл подкачки:

Определите размер нового файла подкачки в мегабайтах и ​​умножьте его на 1024, чтобы определить количество блоков. Например, размер блока файла подкачки размером 64 МБ составляет 65536.
В приглашении оболочки от имени пользователя root введите следующую команду со счетчиком, равным желаемому размеру блока:
dd if = / dev / zero of = / swapfile bs = 1024 count = 65536
Настройте файл подкачки с помощью команды:
mkswap / файл подкачки
Чтобы включить файл подкачки немедленно, но не автоматически во время загрузки:
swapon / файл подкачки
Чтобы включить его во время загрузки, отредактируйте / etc / fstab, включив в него следующую запись:
/ swapfile swap swap по умолчанию 0 0
При следующей загрузке система активирует новый файл подкачки.

После добавления и включения нового файла подкачки убедитесь, что он включен, просмотрев вывод команды cat / proc / swaps или free.

благодарю вас!

Подсказки - если добавление подкачки не устраняет ошибку композитора из памяти / не удалось выделить:

  • После добавления свопа перезагрузите компьютер. Я обнаружил, что ошибка композитора не исчезла после добавления 8G подкачки. Но после перезапуска все заработало.
  • Я также отключил другую виртуальную машину, на которой работал, и закрыл Chrome со слишком большим количеством вкладок.

(Я использую композитор в среде разработки на macOS X Sierra 10.12.4 с 16 ГБ ОЗУ).

Это было решено? Я обновил Composer глобально. Вдобавок я создал 1 ГБ пространства подкачки согласно предложению @ gillera235 . Я все еще получаю ту же ошибку. Что я могу сделать для его устранения?

Если это поможет, я использую экземпляр micro EC2 бесплатного уровня.

поместите файл composer.lock на свой сервер и выполните

композитор --verbose install

Таким образом, установка обновленных пакетов в соответствии с версиями в файле composer.lock не занимала много памяти и была сверхбыстрой.

это случается, когда у тебя меньше памяти
попробуйте эти шаги
1) служба mysql stop
2) запустите свой комментарий
3) запуск службы mysql

@ sagarshah16 Что произойдет, если у меня нет службы mysql?

попробуйте найти, какая из ваших работающих служб занимает больше места в памяти. если это не mysql.

да, ig update composer должен решить проблему, к сожалению, я обновляюсь через git bash. При обновлении всегда возникает одна и та же ошибка. Поэтому для пользователей Windows просто убедитесь, что используете cmd.exe .

Ударил ошибку раньше. Был на Ubuntu 16.04 на микро-экземпляре EC2.
Решается добавлением файла подкачки 1G.

Просто перешел по этой ссылке и решил проблему.

https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

$ apt install swapspace 
$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

Справка:
http://manpages.ubuntu.com/manpages/xenial/man8/swapspace.8.html

Спасибо, Йерун Т. Вермёлен

Enthusiasm is the light of knowledge. Unknown author.

O estusiasmo é luz do conhecimento. Autor desconhecido.

Эту проблему можно усугубить, если не включена избыточная фиксация памяти. Форкинг очень неэффективен без чрезмерного выделения памяти. По сути, когда вы разветвляете, вы удваиваете выделенное использование памяти вашим текущим процессом, создавая другой идентичный процесс. Большая часть этой памяти распределяется между родительским и дочерним процессами, но это копирование при записи, поэтому любая запись приведет к копированию общей памяти. Когда включена избыточная фиксация, ваша система разрешает эту дублированную общую память, но если вы выполняете запись в общую память, у вас может не хватить физической памяти для обработки копии. Если чрезмерная фиксация отключена, ваша система вообще не позволит вам выделить память.

Получение этой ошибки с доступным 1.4GIG ...

$ free -m; composer require --dev phpro/grumphp
              total        used        free      shared  buff/cache   available
Mem:           2000         416        1277          21         305        1405
Swap:             0           0           0
Using version ^0.14.1 for phpro/grumphp
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 12 installs, 0 updates, 0 removals
  - Installing symfony/dependency-injection (v3.4.11): The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details


  [ErrorException]                                   
  proc_open(): fork failed - Cannot allocate memory

Исправление этой проблемы - добавить в экземпляр пространство подкачки (то есть подкачки).

Пейджинг работает путем создания области на жестком диске и использования ее для дополнительной памяти. Эта память работает намного медленнее, чем обычная память, однако ее доступно гораздо больше.

Чтобы добавить это дополнительное пространство к вашему экземпляру, введите:

sudo / bin / dd if = / dev / zero of = / var / swap.1 bs = 1M count = 1024
sudo / sbin / mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo / sbin / swapon /var/swap.1

Если вам нужно больше 1024, измените это на что-то большее.

Чтобы включить его по умолчанию после перезагрузки, добавьте эту строку в / etc / fstab:

/var/swap.1 swap swap по умолчанию 0 0

@dhorrigan ой, согласно трассировке стека, похоже, что фатальная ошибка была вызвана при рендеринге исключения (поскольку он использует proc_open для проверки ширины вашего терминала). Похоже, это не предел памяти php, а скорее закончилась память машины, поэтому я бы предложил очистить другие вещи и запустить его с установкой вместо обновления, если вы можете запустить обновление где-нибудь еще, у которого больше памяти. установка из файла блокировки использует очень мало памяти.

Большое спасибо, вместо запуска composer update я сделал composer install . Что исправило это!

Это лучше, чем увеличивать объем памяти в php.ini или увеличивать память самого экземпляра.

Включение свопа решило мою проблему.

/ bin / dd if = / dev / zero of = / var / swap.1 bs = 1M count = 1024
/ sbin / mkswap /var/swap.1
/ sbin / swapon /var/swap.1

Кто из вас опубликует то, что написано в этой ветке? @jemerocay , ты тему читал? То же написано ~ 10 сообщениями выше.

Авторы: закройте, пожалуйста.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги