При запуске 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 ГБ свободной памяти, чтобы иметь возможность обновлять все.
composer install
достаточно. В вашем случае при использовании виртуального хостинга, я думаю, вы не получитеcomposer update
работы, поэтому единственный способ - купить VPS-хостинг, такой как Digital Ocean, Linode.