#Что означает ошибка
Allowed memory size exhausted
Отключение ограничения памяти Composer допустимо только на контролируемой машине с достаточной RAM; в продакшене предпочтительно composer install по существующему composer.lock.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Малый лимит | Composer сообщает о memory_limit в CLI | Временно поднять лимит под контролем RAM |
| Много пакетов | Разрешение зависимостей потребляет много памяти | Использовать install и согласованный lock |
| Старый Composer | Версия Composer устарела | Обновить штатным способом |
| Нет swap | Linux завершает процесс по OOM | Увеличить доступную RAM или выделить машину сборки |
#Пошаговое решение
- Определите фактическую нехватку памяти ComposerОткройте терминал в корне PHP-проекта и выполните
php --version,php -i | grep memory_limit(Linux/macOS) иcomposer --version. Если Composer действительно выводитAllowed memory size exhausted, найдите этап (разрешение зависимостей, распаковка, выполнение скрипта). Различайте лимит PHP и нехватку физической RAM, при которой процесс завершается системой. Не удаляйтеcomposer.lock— он фиксирует проверенные версии пакетов. - Запустите проверенную команду с временным лимитомЕсли на сервере достаточно свободной RAM, в терминале macOS/Linux выполните
COMPOSER_MEMORY_LIMIT=-1 composer install; в PowerShell —$env:COMPOSER_MEMORY_LIMIT="-1"; composer install. Значение-1отключает лимит PHP для Composer только в этом процессе и потенциально позволяет расходовать всю память, поэтому контролируйте системную нагрузку. Используйтеinstallдля проекта сcomposer.lock, а неupdateради обхода ошибки. - Проверьте версии и возможный конфликт зависимостейОбновите Composer поддерживаемым способом (например,
composer self-update, если установленный способ допускает) и проверьте совместимость с текущим PHP. Приupdateили сложном разрешении зависимостей рассмотрите запуск сборки на отдельной машине с большим объёмом памяти, затем перенос согласованногоcomposer.lockи артефактов. Swap добавляйте только по правилам эксплуатации сервера: это не замена RAM и может замедлить систему. - Проверьте установку и верните обычный режимПовторите
composer installи убедитесь, что зависимости завершили установку, затем выполнитеcomposer check-platform-reqsдля платформенных требований. В PowerShell удалите временную переменнуюRemove-Item Env:COMPOSER_MEMORY_LIMIT, если задавали её для текущей сессии. Если процесс завершился кодом 137 или журнал сообщает OOM, выясняйте системный недостаток памяти, а не увеличивайте бесконечно лимит PHP.