Композитор убит при обновлении
У меня возникла проблема, я попытался установить новый пакет в мой проект Laravel 4.
Но когда я запускаю php composer.phar update
, я получаю это:
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed
Я искал проблему в Интернете и увидел, что проблема с памятью, мне кажется, у меня недостаточно оперативной памяти, я проверил это, у меня около 411 Мб свободного места.
Композитору действительно нужно больше оперативной памяти?
Ответы
Ответ 1
Сообщение "Killed" обычно означает, что ваш процесс потребляет слишком много памяти, поэтому вам, возможно, просто нужно добавить больше памяти в вашу систему. На момент написания этого ответа мне пришлось увеличить объем памяти виртуальной машины как минимум до 768 МБ, чтобы в некоторых ситуациях работало composer update
.
Однако, если вы делаете это на живом сервере, вам вообще не следует использовать composer update
. Вместо этого вам следует сделать следующее:
- Запустите
composer update
в локальной среде (на вашей локальной физической машине или на виртуальной машине разработки) - Загрузите или
git push
файл composer.lock - Запустите
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.