Предел памяти для версии 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