Preciso executar a atualização do composer na minha hospedagem, então faço login com ssh e tento executar o comando:
composer update
dentro da pasta / www onde tenho a instalação do Laravel e do composer
mas recebo o erro:
em contato com meu provedor de hospedagem, eles me dizem para executar o comando:
php -d memory_limit=512M composer update
Eu executo este comando, mas recebo: "Não foi possível abrir o arquivo: composer"
O que fazer? Qual é a solução aqui?
php
laravel
ssh
composer-php
Andrew
fonte
fonte
composer install
basta. No seu caso, ao usar uma hospedagem compartilhada, acho que você não vai conseguircomposer update
trabalhar, então a única maneira é comprar uma hospedagem VPS como Digital Ocean, Linode.Respostas:
Quando você o executa
composer update
, o sistema operacional examina os caminhos configurados e tenta localizar um arquivo executável com esse nome.Quando em execução
php composer update
, acomposer
string é tratada como um parâmetro para o PHP, que não é pesquisado em nenhum caminho. Você deve fornecer o caminho completo para executá-lo.A execução
which composer
dirá onde o sistema operacional encontra o executável do composer e, em seguida, basta usar o caminho completo no comando PHP:$>which composer /usr/local/bin/composer $>php -d memory_limit=512M /usr/local/bin/composer update ...
Observe que 512 MB pode ser muito pouco. Minha percepção é que felizmente levará 1 GB ou mais, dependendo do número de dependências que você usa e da variedade de versões que você permite teoricamente, ou seja, se você permitir o Symfony
~2.3
, então você fará o Composer lidar com muito mais versões possíveis em comparação com o uso~2.7
.Observe também que executar o Composer na máquina de produção não é a melhor ideia. Você teria que ter acesso ao Github, talvez fornecer credenciais de acesso, ter ferramentas VCS instaladas, e você facilmente quebrará seu site se algum dos servidores de hospedagem remota estiver offline durante a atualização. É uma ideia melhor usar o Composer em um sistema de implantação que faz toda a preparação e, em seguida, move todos os arquivos para o servidor de produção.
Atualizar
É o ano de 2020 agora, e a maneira como o Composer gerencia sua memória mudou um pouco. O mais importante é que o Composer aumentará o limite de memória sozinho se encontrar um limite muito baixo. No entanto, isso desencadeia imediatamente o problema de ficar sem memória em máquinas com muito pouca memória instalada. Você pode fazer o Composer usar menos memória configurando a variável de ambiente como
COMPOSER_MEMORY_LIMIT=512M
, mas isso criará problemas se o Composer precisar de mais memória para operar corretamente.Meu ponto principal permanece verdadeiro: não execute o Composer em máquinas que tenham pouca memória instalada. Você precisa potencialmente de 1,5 GB de memória livre para atualizar tudo.
fonte
php -d memory_limit=-1 $(which composer) update
é mais conveniente porque não há necessidade de especificar o caminho do compositor.php -d memory_limit=-1 $(which composer).phar update
Configure-o para usar a quantidade de memória que desejar com:
COMPOSER_MEMORY_LIMIT=-1 composer update
fonte
COMPOSER_MEMORY_LIMIT=-1; export COMPOSER_MEMORY_LIMIT
. Ou defini-lo como um alias de shell?alias memcomposer='COMPOSER_MEMORY_LIMIT=-1 composer'
e, em seguida, use emmemcomposer
vez decomposer
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
Estou enfrentando problemas com o composer porque ele consome toda a memória disponível e, em seguida, o processo é encerrado (na verdade, a mensagem de saída é "Killed")
Então, eu estava procurando uma solução para limitar o uso de memória do compositor.
Eu tentei (das respostas @Sven)
$ php -d memory_limit=512M /usr/local/bin/composer update
Mas não funcionou porque
-> Isso é do site oficial do compositor.
Então eu encontrei um comando que funciona:
$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update
Porém, no meu caso 512mb não é suficiente!
Fonte: https://www.agileana.com/blog/composer-memory-limit-trou troubleshooting/
fonte
COMPOSER_MEMORY_LIMIT=-1 composer require <package name>
Tive que combinar
COMPOSER_MEMORY_LIMIT
ememory_limit
na linha de comando:No Windows:
set COMPOSER_MEMORY_LIMIT=99999999999&& php -d memory_limit=-1 composer.phar update
No Linux:
export COMPOSER_MEMORY_LIMIT=99999999999 && php -d memory_limit=-1 composer.phar update
fonte
A melhor solução para mim é
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name>
mencionado por @realtebo
fonte
Se houver memória suficiente, o compositor irá consumi-la internamente e funcionar sem nenhum problema. Não há necessidade de dizer especificamente ao compositor para fazer isso.
Você tentou aumentar sua memória swap, porque funcionou para mim. Aumentei a memória swap para 4096Mb (4GB) e agora tudo parece ótimo para mim.
primeiro use "
sudo free
" para ver a memória disponível e a memória de troca. e configurar a troca como,Para 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
para torná-lo permanente, adicione-o ao arquivo / etc / fstab,
/swapfile swap swap defaults 0 0
Para 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
você pode aumentar sua memória swap alterando bs = 1024k ou 2048k ou 8096k dependendo do tamanho do seu volume físico. use os comandos 'swapon' e swapoff para ver a diferença.
marque 'troca' (60 deve ser bom,)
fonte
Você pode alterar o
memory_limit
valor em seu php.iniTente aumentar o limite em seu arquivo php.ini
Use -1 para ilimitado ou defina um valor explícito como 2G
memory_limit = -1
Leia a documentação getcomposer.org
fonte
No MAC OS High Siera, executei o seguinte:
Devolvida:
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
Todas as respostas acima estão definindo a configuração carregada que é atualizada, mas observe que os arquivos .ini adicionais analisados possuem php-memory-limits.ini como um arquivo separado. Você também deve atualizar este limite de memória de arquivo. da mesma forma, abra no editor de texto e mude para algo como 2G. A saída em caso de falha de limite de memória deve informar quanta memória ele precisa para ser executado, apenas defina-o para um valor superior ou -1 para ilimitado.
fonte
Este erro pode ocorrer especialmente quando você está atualizando grandes bibliotecas ou bibliotecas com muitas dependências. O Composer pode precisar de muita memória.
Certifique-se de que seu próprio compositor esteja atualizado para a versão mais recente:
php composer.phar --self-update
Você pode aumentar o limite de memória do compositor temporariamente adicionando a variável de ambiente de limite de memória do compositor:
COMPOSER_MEMORY_LIMIT=128MB php composer.phar update
Use o formato “128M” para megabyte ou “2G” para gigabyte. Você pode usar o valor “-1” para ignorar o limite de memória completamente.
Outra forma seria aumentar o limite de memória do PHP:
php -d memory_limit=512M composer.phar update ...
fonte
Fiz isso no Windows 10 e trabalhei comigo:
php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar update
Você pode alterar o valor xx que deseja
fonte
Qual é o tamanho do seu servidor aws? Se ele tiver apenas 1 gb de ram, definir o limite de memória de 2 gb no php.ini não ajudará.
Se você não pode / não deseja aumentar o lado do servidor para obter mais RAM disponível, você também pode ativar o SWAP.
Veja aqui como habilitar a troca. Ele habilita 4 GB, embora eu normalmente faça apenas 1 GB.
Fonte: obtido do site laracast
fonte
No meu caso, nenhuma das respostas ajudou. Por fim, descobriu-se que mudar para uma versão de 64 bits do PHP (M $ Windows) corrigiu o problema imediatamente. Eu não alterei nenhuma configuração - simplesmente funcionou.
fonte
Estou executando o Laravel 6 com Homestead e também encontrei esse problema. Como sugerido aqui nas outras respostas, você pode prefixar
COMPOSER_MEMORY_LIMIT=-1
um único comando e executar o comando normalmente. Se você gostaria de atualizar sua configuração de PHP para sempre permitir memória ilimitada, siga estas etapas.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
Adicione
memory_limit=-1
ao seu arquivo php.ini. Se você está tendo problemas para usar o Vim ou fazer edições no arquivo php.ini, verifique esta resposta sobre como editar o arquivo php.ini com o Vim. O arquivo deve ser semelhante a este:; Maximum amount of memory a script may consume ; http://php.net/memory-limit memory_limit = -1
Observe que isso pode consumir uma quantidade infinita de memória em sua máquina. Provavelmente não é uma boa ideia para produção lol. Com o Laravel Valet teve que seguir este artigo e atualizar o valor da memória aqui:
sudo vi /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
Em seguida, reinicie o servidor com o Valet:
Esta resposta também foi útil para alterar a configuração com o Laravel Valet no Mac para que as alterações tenham efeito.
fonte
<C:\>set COMPOSER_MEMORY_LIMIT=-1 <C:\>composer install exhausted/packages
fonte
Para quem usa o Laravel Homestead
Escreva isso em
Homestead.yaml
variables: - key: COMPOSER_MEMORY_LIMIT value: -1
fonte
php ini
arquivomemory_limit = -1
fonte
Para Laravel
Etapa 1. Abra seu terminal
etapa 2.
cd
em seu diretório laravelEtapa 3. Digite o comando
which composer
, em seu diretório laravel e observe o diretório no qual o composer reside.etapa 4. execute o comando
php -d memory_limit=-1 /opt/cpanel/bin/composer update
(você também pode executar o código se funcionar para você)(mude
/opt/cpanel/bin/composer
para o caminho do diretório retornado na etapa 3)Problema resolvido
fonte
No Windows 10 (Git bash), tive que usar este
php -d memory_limit=-1 C:\\composer\\composer.phar install
fonte
No meu caso, precisava de permissões mais altas junto com esse aumento de limite de memória.
sudo COMPOSER_MEMORY_LIMIT=2G php /opt/bitnami/php/bin/composer.phar update
fonte
sudo
não é uma boa ideia, pois irá confundir suas permissões. Parece que você está executandocomposer update
em um servidor - essa também é uma prática ruim, pois tornará muito mais diferente colocar as dependências calculadas sob controle de versão