Столкнулся с проблемой на веб-сервере с 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
.
В этом случае никаких проблем с памятью.
Что использовалось:
- Debian 9
- Composer 1.9.0
- Laravel 5.8.23
Установка – это установка, обновление в любом случае иногда нужно делать. Посольку сервер с 1Гб памяти не справляется с задачей, то остаётся среда разработки. Обновляем сайт в ней, потом перекидываем файлы composer.json
и composer.lock
на рабочую машину. Удаляем каталог vendor
и устанавливаем пакеты. Результат будет тот же. В принципе, такой подход более правильный.