Composer и Symfony - Неустранимая ошибка: недостаточно памяти

Я запускаю Symfony 3.4 LTS с композитором. Мой веб-сайт работает нормально, но когда я пытаюсь обновить любой пакет с помощью:

php composer.phar update
# or
php composer.phar update symfony/symfony
# or
php composer.phar update swiftmailer/swiftmailer

Я получаю такую ​​ошибку:

PHP Fatal error: Out of memory [...] in phar:/// [...]

Ниже то, что я уже тестировал:

  • увеличить мой memory_limit с 196M до 1024M
  • запустите composer.phar с php -d memory_limit = -1

.. безуспешно. Что еще я мог попробовать? Кстати, если я запустил free -m:

total used free shared buffers cached
Mem: 2002 361 1641 0 7 82
-/+ buffers/cache: 270 1732
Swap: 255 255 0

Возможный дубликат stackoverflow.com/questions/51261141/…

Jim Panse 10.07.2018 14:44

Что говорят ваши журналы Symfony? Их журнал, вероятно, находится где-то вроде /var/www/your_project/var/logs/prod.log или чего-то подобного.

Ollie in PGH 10.07.2018 14:49

Он не генерирует никаких журналов. Если я добавлю опцию '-verbose', я получу proc_open (): fork failed Errors

Paolito75 10.07.2018 15:07

Я не могу установить более 1 Гб в параметре memory_limit (ограничение хостинг-провайдера)

Paolito75 10.07.2018 15:10

Это хорошо известная проблема композитора, stackoverflow полон этого ... больше памяти кажется единственным реальным способом для первой установки. Разрешение зависимостей пожирает оперативную память. Я не могу вам помочь, потому что ваша оперативная память ограничена вашим хост-провайдером. Я бы сначала проверил, присутствует ли проблема на моем локальном (> 1 ГБ ОЗУ) компьютере с меньшим объемом памяти и увеличивая память шаг за шагом, чтобы выяснить, действительно ли память является ограничивающей частью, и когда да, то какое значение следует использовать. .. я почти уверен, что если объем памяти превышает 4 ГБ и сообщение такое же, должна быть другая проблема ...

Jim Panse 10.07.2018 17:04

Установите / обновите на машине разработчика, переместите сгенерированный файл composer.lock на машину с низким объемом памяти, а затем запустите "composer install". У меня есть машина размером 0,5 ГБ, и это обычно работает для меня. Иногда мне также нужно перезагрузиться, чтобы иметь как можно больше памяти. Кроме того, вам не следует делать обновления в производственной среде, поскольку вы никогда не знаете, что именно вы получите.

Cerad 10.07.2018 17:13

Хорошо, я собираюсь скопировать свой сайт на локальную тестовую машину. Для справки, это минимальный новый веб-сайт Symfony, содержащий всего 12 необходимых пакетов! Если 1G аппаратной памяти недостаточно для запуска Composer ... какой тупой инструмент!

Paolito75 10.07.2018 17:31

1 ГБ оперативной памяти достаточно для запуска композитора, но этого недостаточно для разрешения множества зависимостей. Если вы думаете, что это глупо, пожалуйста, сделайте нам одолжение и внедрите разумную альтернативу, которая использует меньше оперативной памяти.

Jakumi 10.07.2018 20:21

Запустите обновление композитора на своем локальном компьютере. В первую очередь вам следует избегать использования обновления композитора на сервере; вместо этого используйте установку композитора.

Stephan Vierkant 11.07.2018 23:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
10
3 511
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Я решил свою проблему.

  • Резервное копирование файлов веб-сайта на локальном уровне
  • Установите Wamp и запустите серверы
  • Увеличьте лимит памяти до 2G
  • Сделайте composer update
  • Загрузите файлы на рабочий сервер

Я очень не понимаю композитора и его требований. Это безумие...

php -d memory_limit=-1 `which composer` update

Обновите композитор до последней версии с помощью этой команды, composer selfupdate, а затем запустите команду require

как указано в этом ответе, https://github.com/composer/composer/issues/2704#issuecomment-56169024,

это сработало для меня.

используйте symfony / flex, он включает оптимизацию, которая должна значительно снизить требования к памяти Composer

была такая же проблема на моем живом сервере.

rm -R vendor/
composer install

отлично работает, когда composer.json обновлен.

Другие вопросы по теме