Предел памяти для версии Composer

Мне нужно запустить обновление для композитора на моем хостинге, поэтому я вхожу в систему с помощью ssh и пытаюсь запустить команду:

composer update

внутри/www папка, где у меня есть laravel и установка композитора

но я получаю ошибку: введите описание изображения здесь

в контакте с моим хостинг-провайдером они говорят мне, что я запускаю команду:

php -d memory_limit=512M composer update

Я запускаю эту команду, но получаю: "Не удалось открыть файл: композитор"

Что делать? Что такое солютон здесь?

Ответ 1

При запуске composer update ОС заглянет в настроенные пути и попытается найти исполняемый файл с этим именем.

При запуске php composer update строка composer рассматривается как параметр для PHP, который не выполняется поисками по каким-либо путям. Вы должны предоставить полный путь, чтобы запустить его.

Запуск which composer расскажет вам, где ОС находит исполняемый файл композитора, а затем вы просто используете полный путь в команде PHP:

$>which composer
/usr/local/bin/composer

$>php -d memory_limit=512M /usr/local/bin/composer update
...

Обратите внимание, что 512 МБ может быть слишком мало. Мое мнение состоит в том, что он с радостью займет 1 ГБ или больше, в зависимости от количества используемых вами зависимостей и разнообразия версий, которые вы теоретически допускаете, т.е. если вы разрешаете Symfony ~2.3, то вы делаете Composer более много возможных версий по сравнению с использованием ~2.7.

Также обратите внимание, что работающий Composer на производственной машине - не лучшая идея. Вы должны иметь доступ к Github, возможно, предоставить учетные данные доступа, установить инструменты VCS, и вы легко сломаете свой сайт, если какой-либо из удаленных хостинговых серверов отключен во время вашего обновления. Лучше всего использовать Composer в системе развертывания, которая выполняет всю подготовку, а затем перемещает все файлы на рабочий сервер.

Ответ 2

Установите для него столько памяти, сколько нужно:

COMPOSER_MEMORY_LIMIT=-1 composer update

Ответ 3

Я сталкиваюсь с проблемами с composer, потому что он потребляет всю доступную память, а затем, процесс убит (на самом деле, выходное сообщение "Killed")

Итак, я искал решение для ограничения использования памяти композитора.

Я пытался (из ответов @Sven)

$ php -d memory_limit=512M /usr/local/bin/composer update

Но это не сработало, потому что

"Композитор внутренне увеличивает memory_limit до 1.5G."

→ То из официального сайта композитора.

Затем я нашел команду, которая работает:

$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update

Хотя 512 не достаточно!

Источник: https://www.agileana.com/blog/composer-memory-limit-trou устранение неисправностей /

Ответ 4

Если бы памяти было достаточно, композитор внутренне использовал бы ее и работал бы без проблем. Не нужно специально указывать композитору сделать это.

Вы пытались увеличить свою память подкачки, потому что у меня это сработало. Я увеличил объем памяти подкачки до 4096 МБ (4 ГБ), и теперь все выглядит великолепно.

Сначала используйте "sudo free" для просмотра доступной памяти и подкачки памяти. и настройте swap как

Для Debian:

sudo fallocate -l 4G /swapfile
sudo dd if=/dev/zero of=/swapfile bs=4096k count=1048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

чтобы сделать это постоянным, добавьте это в файл /etc/fstab, /swapfile swap swap defaults 0 0

Для CentOS:

[[email protected]]:/# cd /var
[[email protected]]:/var# touch swap.img
[[email protected]]:/var# chmod 600 swap.img
[[email protected]]:/var# mkswap /var/swap.img

[[email protected]]:/var# dd if=/dev/zero of=/var/swap.img bs=4096k count=1000
[[email protected]]:/var# mkswap /var/swap.img 
[[email protected]]:/var# swapon /var/swap.img

вы можете увеличить объем подкачки, изменив значение bs = 1024k или 2048k или 8096k в зависимости от размера вашего физического объема. используйте команды swapon и swapoff, чтобы увидеть разницу.

проверить "swappiness" (60 должно быть хорошо,)

cat /proc/sys/vm/swappiness

Ответ 5

Вы можете изменить значение memory_limit в вашем php.ini

Попробуйте увеличить лимит в вашем файле php.ini

Используйте -1 для неограниченного или определить явное значение, как 2G

memory_limit = -1

Примечание: Composer внутренне увеличивает memory_limit до 1.5G.

Прочитайте документацию getcomposer.org

Ответ 6

Насколько велик ваш сервер AWS? Если он имеет только 1 ГБ оперативной памяти, установка предела памяти в 2 ГБ в php.ini не поможет.

Если вы не можете/не хотите увеличивать серверную часть, чтобы получить больше доступной оперативной памяти, вы также можете включить SWAP.

См. здесь , как включить подкачку. Это разрешает 4 ГБ, хотя я обычно сам делаю только 1 ГБ.

Источник: взято с сайта laracast