Подтвердить что ты не робот

Композитор убит при обновлении

У меня возникла проблема, я попытался установить новый пакет в мой проект Laravel 4. Но когда я запускаю php composer.phar update, я получаю это:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed

Я искал проблему в Интернете и увидел, что проблема с памятью, мне кажется, у меня недостаточно оперативной памяти, я проверил это, у меня около 411 Мб свободного места. Композитору действительно нужно больше оперативной памяти?

4b9b3361

Ответ 1

Сообщение "Killed" обычно означает, что ваш процесс потребляет слишком много памяти, поэтому вам, возможно, просто нужно добавить больше памяти в вашу систему. На момент написания этого ответа мне пришлось увеличить объем памяти виртуальной машины как минимум до 768 МБ, чтобы в некоторых ситуациях работало composer update.

Однако, если вы делаете это на живом сервере, вам вообще не следует использовать composer update. Вместо этого вам следует сделать следующее:

  1. Запустите composer update в локальной среде (на вашей локальной физической машине или на виртуальной машине разработки)
  2. Загрузите или git push файл composer.lock
  3. Запустите composer install на реальном сервере

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

Подробнее читайте здесь: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file

Ответ 2

Если, как и я, вы используете какую-то микро-виртуальную машину, которой не хватает памяти, создание файла подкачки делает свое дело:

free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m

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

Ответ 3

Это потому, что на вашем хостинге не хватает памяти, пожалуйста, проверьте этот учебник

Ответ 4

Несомненно, композитор требует много оперативной памяти и вычислительной мощности. Вот несколько вещей, которые я сделал, которые в совокупности сделали этот процесс терпимым. Это было на моем облачном мануале.

  • Возможно, вы просто исчерпали ОЗУ. Включить swap: https://www.digitalocean.com/community/search?query=how+to+add+swap (примечание: я считаю, что лучше всего добавить отдельный раздел. Руководство Digitalocean подходит для их среды)
  • service mysql stop (убейте свои службы DB/mem-hog, чтобы освободить некоторую ОЗУ - не забудьте запустить его снова!)
  • используйте сеанс вторичного терминала, работающий под top, чтобы наблюдать за потреблением памяти/подкачки до завершения процесса.
  • composer.phar update --prefer-dist -vvv (verbose output [все еще зависает в некоторых случаях при работе] и использует файлы zip файлов). Возможно, попробуйте --dry-run тоже?
  • Похоже, что композитор работает медленнее в более старых версиях PHP (например, 5.3x). Это было все еще медленным в 5.5.9 для меня...

Ответ 5

Исправление DigitalOcean, которое не требует дополнительной памяти - активация подкачки, вот пример для 1 ГБ:

в терминале бегите ниже

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

Вышеупомянутое решение будет работать до следующей перезагрузки, после чего своп должен быть повторно активирован. Чтобы сохранить его между перезагрузками, добавьте файл подкачки в fstab:

sudo nano /etc/fstab

откройте указанный выше файл и добавьте в него нижнюю строку

/var/swap.1 swap swap sw 0 0

Теперь перезапустите сервер. Композитор требует работает отлично.

Ответ 6

Вы можете попробовать что-то вроде этого

php -d memory_limit=4G /usr/local/bin/composer update

Ответ 7

Запустите composer self-update и composer clearcache удалить vendor и composer.lock перезагрузите локальную среду и затем запустите php -d memory_limit=-1 /usr/local/bin/composer install

Ответ 8

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

Ответ 9

Вы можете настроить preferred-install на "dist" в конфигурации WP CLI Composer - обычно на ~/.wp-cli/packages/composer.json.

Ответ 10

php -d memory_limit = 5G composer.phar update

Ответ 11

Решено в Laravel/Homestead (Бродячие окна)

1) Отредактируйте Homestead.yaml и увеличьте объем памяти с 2048 до 4096

2) бродячий до

3) бродячий ssh

4) Установите Symfony с этой строкой в выбранную вами папку (должна быть без файлов)

COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/website-skeleton . -s dev

Ответ 12

Я получил эту проблему из-за пакета, который не обновляется корректно с подстановочными знаками, я использую непосредственно последнюю версию, и она наконец работает.

"l3/cas-bundle": "~ 1.0" ---→ "l3/cas-bundle": "1.1.13"

Ответ 13

Я получал эту ошибку в локальной среде Docksal. Я решил это, просто перезапустив Docker.