Laravel, Composer и Cannot allocate memory

Дмитрий Корнев
19 августа 2019

Столкнулся с проблемой на веб-сервере с 1Гб памяти. Менеджер пакетов Composer не смог обновить сайт на Laravel. Ничего супер-тяжелого там не используется.

user@server:~/laravel$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory
PHP Fatal error:  Out of memory (allocated 536879104) (tried to allocate 8192 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/GenericRule.php on line 36

Fatal error: Out of memory (allocated 536879104) (tried to allocate 8192 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/GenericRule.php on line 36

Поиск в интернете показал, что я не одинок с проблемой. Но решения нет. Похоже считатется, что 1Гб – это уже мало, тем более для Laravel.

Выход пока только один — вместо обновления делаем установку:

composer install

Предварительно не забудьте удалить каталог vendor.

В этом случае никаких проблем с памятью.

Что использовалось:

Установка – это установка, обновление в любом случае иногда нужно делать. Посольку сервер с 1Гб памяти не справляется с задачей, то остаётся среда разработки. Обновляем сайт в ней, потом перекидываем файлы composer.json и composer.lock на рабочую машину. Удаляем каталог vendor и устанавливаем пакеты. Результат будет тот же. В принципе, такой подход более правильный.

Комментарии