Мне нужно запустить обновление композитора на моем хостинге, поэтому я вхожу в систему с помощью ssh и пытаюсь выполнить команду:
composer update
внутри папки / www, где у меня установлен Laravel и композитор
но я получаю ошибку:
в контакте с моим хостинг-провайдером они говорят мне запустить команду:
php -d memory_limit=512M composer update
Я запускаю эту команду, но получаю: «Не удалось открыть файл: композитор»
Что делать? Какое здесь решение?
php
laravel
ssh
composer-php
Андрей
источник
источник
composer install
достаточно. В вашем случае при использовании виртуального хостинга, я думаю, вы не получитеcomposer update
работы, поэтому единственный способ - купить VPS-хостинг, такой как Digital Ocean, Linode.Ответы:
При запуске
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 в системе развертывания, которая выполняет всю подготовку, а затем перемещает все файлы на рабочий сервер.
Обновить
Сейчас 2020 год, и то, как Composer управляет своей памятью, немного изменилось. Самым важным является то, что Composer сам увеличит лимит памяти, если он обнаружит слишком низкий лимит. Однако это немедленно вызывает проблему нехватки памяти на машинах, на которых установлено слишком мало памяти. Вы можете заставить Composer использовать меньше памяти, установив переменную среды как
COMPOSER_MEMORY_LIMIT=512M
, но это создаст проблемы, если Composer потребуется больше памяти для правильной работы.Моя основная мысль остается верной: не запускайте Composer на машинах, на которых установлено слишком мало памяти. Возможно, вам понадобится 1,5 ГБ свободной памяти, чтобы иметь возможность обновлять все.
источник
php -d memory_limit=-1 $(which composer) update
более удобен тем, что не нужно указывать путь композитора.php -d memory_limit=-1 $(which composer).phar update
Настройте его на использование столько памяти, сколько он хочет:
COMPOSER_MEMORY_LIMIT=-1 composer update
источник
COMPOSER_MEMORY_LIMIT=-1; export COMPOSER_MEMORY_LIMIT
. Или определить это псевдоним оболочки?alias memcomposer='COMPOSER_MEMORY_LIMIT=-1 composer'
, затем используйтеmemcomposer
вместоcomposer
Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Я столкнулся с проблемами с композитором, потому что он потребляет всю доступную память, а затем процесс завершается (на самом деле, выходное сообщение - «Killed»)
Итак, я искал решение для ограничения использования памяти композитора.
Я пробовал (из ответов @Sven)
$ php -d memory_limit=512M /usr/local/bin/composer update
Но это не сработало, потому что
-> С официального сайта композитора.
Затем я нашел команду, которая работает:
$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update
Хотя, в моем случае 512мб мало!
Источник: https://www.agileana.com/blog/composer-memory-limit-troubleshooting/
источник
COMPOSER_MEMORY_LIMIT=-1 composer require <package name>
Пришлось совместить
COMPOSER_MEMORY_LIMIT
иmemory_limit
в командной строке:В Windows:
set COMPOSER_MEMORY_LIMIT=99999999999&& php -d memory_limit=-1 composer.phar update
В Linux:
export COMPOSER_MEMORY_LIMIT=99999999999 && php -d memory_limit=-1 composer.phar update
источник
Лучшее решение для меня - это
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name>
упомянутый @realtebo
источник
Если памяти достаточно, композитор будет использовать ее внутри и работать без проблем. Нет необходимости специально говорить композитору об этом.
Вы пытались увеличить память подкачки, потому что у меня это сработало. Я увеличил объем памяти подкачки до 4096 МБ (4 ГБ), и теперь мне все отлично.
сначала используйте "
sudo free
", чтобы увидеть доступную память и подкачать память. и настройте своп как,Для 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:
[root@myserver]:/# cd /var [root@myserver]:/var# touch swap.img [root@myserver]:/var# chmod 600 swap.img [root@myserver]:/var# mkswap /var/swap.img [root@myserver]:/var# dd if=/dev/zero of=/var/swap.img bs=4096k count=1000 [root@myserver]:/var# mkswap /var/swap.img [root@myserver]:/var# swapon /var/swap.img
Вы можете увеличить объем памяти подкачки, изменив bs = 1024 КБ, 2048 КБ или 8096 КБ в зависимости от размера вашего физического тома. используйте команды swapon и swapoff, чтобы увидеть разницу.
проверьте 'swappiness' (60 должно быть хорошо,)
источник
Вы можете изменить
memory_limit
значение в своем php.iniПопробуйте увеличить лимит в вашем файле php.ini
Используйте -1 для неограниченного или определите явное значение, например 2G
memory_limit = -1
Прочтите документацию getcomposer.org
источник
В MAC OS High Siera я выполнил следующее:
Возвращено:
Configuration File (php.ini) Path: /usr/local/etc/php/7.4 Loaded Configuration File: /usr/local/etc/php/7.4/php.ini Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d Additional .ini files parsed: /usr/local/etc/php/7.4/conf.d/ext- opcache.ini, /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
Все ответы выше устанавливают загруженную конфигурацию, которая обновляется, но обратите внимание, что дополнительные проанализированные файлы .ini имеют php-memory-limits.ini как отдельный файл. Вам также необходимо обновить этот предел памяти файла. таким же образом откройте в текстовом редакторе и измените на что-то вроде 2G. Выходные данные о сбое ограничения памяти должны сказать вам, сколько памяти ему нужно для запуска, просто установите его выше, чем это, или -1 для неограниченного.
источник
Эта ошибка может возникать, особенно когда вы обновляете большие библиотеки или библиотеки с большим количеством зависимостей. Композитор может быть очень голодным по памяти.
Убедитесь, что сам ваш композитор обновлен до последней версии:
php composer.phar --self-update
Вы можете временно увеличить ограничение памяти для композитора, добавив переменную среды ограничения памяти композитора:
COMPOSER_MEMORY_LIMIT=128MB php composer.phar update
Используйте формат «128M» для мегабайта или «2G» для гигабайта. Вы можете использовать значение «-1», чтобы полностью игнорировать ограничение памяти.
Другой способ - увеличить лимит памяти PHP:
php -d memory_limit=512M composer.phar update ...
источник
Я сделал это в Windows 10 и работал со мной:
php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar update
Вы можете изменить значение xx, которое хотите
источник
Насколько велик ваш сервер AWS? Если у него только 1 ГБ оперативной памяти, установка ограничения памяти в 2 ГБ в php.ini не поможет.
Если вы не можете / не хотите также увеличивать серверную часть, чтобы получить больше оперативной памяти, вы также можете включить SWAP.
См. Здесь, как включить свопинг. Он позволяет использовать 4 ГБ, хотя я обычно использую только 1 ГБ.
Источник: Получено с сайта laracast
источник
В моем случае ни один из ответов не помог. В конце концов выяснилось, что переход на 64-битную версию PHP (M $ Windows) сразу устранил проблему. Никаких настроек не менял - просто заработало.
источник
Я запускаю Laravel 6 с Homestead и тоже столкнулся с этой проблемой. Как предлагается здесь в других ответах, вы можете использовать префикс
COMPOSER_MEMORY_LIMIT=-1
для одной команды и запускать ее в обычном режиме. Если вы хотите обновить конфигурацию PHP, чтобы всегда иметь неограниченный объем памяти, выполните следующие действия.vagrant up vagrant ssh php --version # 7.4 php --ini # Shows path to the php.ini file that's loaded cd /etc/php/7.4/cli # your PHP version. Each PHP version has a folder sudo vi php.ini
Добавьте
memory_limit=-1
в свой файл php.ini. Если у вас возникли проблемы с использованием Vim или внесением изменений в файл php.ini, ознакомьтесь с этим ответом о том, как редактировать файл php.ini с помощью Vim. Файл должен выглядеть примерно так:; Maximum amount of memory a script may consume ; http://php.net/memory-limit memory_limit = -1
Обратите внимание, что это может занять бесконечное количество памяти на вашем компьютере. Наверное, не лучшая идея для производства lol. С Laravel Valet пришлось следовать этой статье и обновлять значение памяти здесь:
sudo vi /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
Затем перезапустите сервер с помощью Valet:
Этот ответ также был полезен для изменения конфигурации с помощью Laravel Valet на Mac, чтобы изменения вступили в силу.
источник
<C:\>set COMPOSER_MEMORY_LIMIT=-1 <C:\>composer install exhausted/packages
источник
Для тех, кто использует Laravel Homestead
Напишите это на
Homestead.yaml
variables: - key: COMPOSER_MEMORY_LIMIT value: -1
источник
php ini
файлуmemory_limit = -1
источник
Для Laravel
Шаг 1. Откройте свой терминал
шаг 2.
cd
в ваш каталог laravelШаг 3. Введите команду
which composer
в каталоге laravel и обратите внимание на каталог, в котором находится композитор.шаг 4. запустите команду
php -d memory_limit=-1 /opt/cpanel/bin/composer update
(вы также можете запустить код, если он вам подходит)(измените
/opt/cpanel/bin/composer
путь к каталогу, возвращенный на шаге 3)Задача решена
источник
В Windows 10 (Git bash) мне пришлось использовать это
php -d memory_limit=-1 C:\\composer\\composer.phar install
источник
В моем случае требовались более высокие разрешения наряду с увеличением лимита памяти.
sudo COMPOSER_MEMORY_LIMIT=2G php /opt/bitnami/php/bin/composer.phar update
источник
sudo
- не лучшая идея, поскольку это приведет к смешиванию ваших разрешений. Похоже, что вы работаетеcomposer update
на сервере - это тоже плохая практика, так как это сделает гораздо более разными, если вычисленные зависимости будут находиться под контролем версий