Cuando ejecute composer update
, el sistema operativo buscará en las rutas configuradas e intentará localizar un archivo ejecutable con ese nombre.
Cuando se ejecuta php composer update
, la composer
cadena se trata como un parámetro de PHP, que no se busca en ninguna ruta. Debe proporcionar la ruta completa para ejecutarlo.
La ejecución which composer
le dirá dónde encuentra el sistema operativo el ejecutable del compositor, y luego simplemente use la ruta completa en el comando PHP:
$>which composer
/usr/local/bin/composer
$>php -d memory_limit=512M /usr/local/bin/composer update
...
Tenga en cuenta que 512 MB pueden ser muy pocos. Mi percepción es que felizmente tomará 1GB o más, dependiendo de la cantidad de dependencias que uses y la variedad de versiones que teóricamente permitas, es decir, si permites Symfony ~2.3
, entonces haces que Composer maneje muchas más versiones posibles en comparación con el uso ~2.7
.
También tenga en cuenta que ejecutar Composer en la máquina de producción no es la mejor idea. Debería tener acceso a Github, tal vez proporcionar credenciales de acceso, tener herramientas VCS instaladas y romperá fácilmente su sitio si alguno de los servidores de alojamiento remoto está fuera de línea durante su actualización. Es una mejor idea usar Composer en un sistema de implementación que hace toda la preparación y luego mueve todos los archivos al servidor de producción.
Actualizar
Ahora estamos en el año 2020, y la forma en que Composer administra su memoria ha cambiado bastante. Lo más importante es que Composer aumentará el límite de memoria por sí mismo si encuentra un límite demasiado bajo. Sin embargo, esto desencadena inmediatamente el problema de quedarse sin memoria en máquinas que tienen muy poca memoria instalada. Puede hacer que Composer use menos memoria configurando la variable de entorno como COMPOSER_MEMORY_LIMIT=512M
, pero esto creará problemas si Composer necesita más memoria para funcionar correctamente.
Mi punto principal sigue siendo cierto: no ejecute Composer en máquinas que tengan muy poca memoria instalada. Potencialmente, necesita 1,5 GB de memoria libre para poder actualizar todo.
composer install
es suficiente. En su caso, mientras usa un hosting compartido, creo que no podrácomposer update
trabajar, así que la única forma es comprar un hosting VPS como Digital Ocean, Linode.