У меня возникла проблема, я попытался установить новый пакет в свой проект laravel 4.
Но когда я запускаю php composer.phar update
, я получаю следующее:
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed
Я искал проблему в Интернете и увидел, что проблема в памяти, я думаю, что у меня недостаточно оперативной памяти, я проверил это у меня около 411mb бесплатно. Действительно ли композитору требуется больше оперативной памяти? Может кто-нибудь мне помочь?
Спасибо
Сообщение "Killed" обычно означает, что ваш процесс потребляет слишком много памяти, поэтому вам, возможно, просто нужно добавить больше памяти в вашу систему. На момент написания этого ответа мне пришлось увеличить объем памяти виртуальной машины как минимум до 768 МБ, чтобы в некоторых ситуациях работало composer update
.
Однако, если вы делаете это на живом сервере, вам вообще не следует использовать composer update
. Вместо этого вам следует сделать следующее:
composer update
в локальной среде (на вашей локальной физической машине или на виртуальной машине разработки)git push
файл composer.lockcomposer install
на реальном сервере Затем программа composer install
будет считывать из файла.lock, каждый раз выбирая одни и те же версии, а не находя последние версии каждого пакета. Это снижает вероятность поломки вашего приложения, а композитор использует меньше памяти.
Подробнее читайте здесь: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
Если, как и я, вы используете какую-то микро-виртуальную машину, которой не хватает памяти, создание файла подкачки делает свое дело:
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
, вероятно, не самое лучшее место, но я не знаю, какое это было бы место, и редко беспокоится, так как крошечные серверы в основном используются для тестирования.
sudo
- мне пришлось использовать привилегии root для запуска этих команд.
swapon: swapfile: swapon failed: Operation not permitted
, почему?
Это потому, что ваш хостинг не хватает памяти, пожалуйста, проверьте этот учебник
Несомненно, композитор требует много оперативной памяти и вычислительной мощности. Вот несколько вещей, которые я сделал, которые в совокупности сделали этот процесс терпимым. Это было на моем облачном мануале.
service mysql stop
(убейте свои службы DB/mem-hog, чтобы освободить некоторую ОЗУ - не забудьте запустить его снова!)top
, чтобы наблюдать за потреблением памяти/подкачки до завершения процесса.composer.phar update --prefer-dist -vvv
(verbose output [все еще зависает в некоторых случаях при работе] и использует файлы zip файлов). Возможно, попробуйте --dry-run
тоже?Вы можете попробовать что-то вроде этого
php -d memory_limit=4G /usr/local/bin/composer update
Исправление 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
Теперь перезапустите сервер. Композитор требует работает отлично.
Вы можете настроить preferred-install
на "dist"
в конфигурации WP CLI Composer - обычно на ~/.wp-cli/packages/composer.json
.
В случае, если кто-то другой встретится с этой проблемой. Это может быть связано с тем, что предел дискретизации превышает.