web-dev-qa-db-pt.com

permissão negada para o compositor em/usr/local/bin /

Eu segui a documentação em https://getcomposer.org/doc/00-intro.md#globally para instalar o compositor globalmente no Arch Linux. Quando eu faço composer self-update, recebo esta mensagem:

  [ErrorException]                                                                                    
  rename(/home/hannes/.composer/cache/composer-temp.phar,/usr/local/bin/composer): Permission denied 

As permissões em /usr/local/bin/ (eu mudei para 777, mas não ajudou):

-rwxrwxrwx  1 hannes users 1104202 30. Mai 18:07 composer

No meu diretório home eu fiz isso:

Sudo chmod -R 777 .composer/

Em /etc/php/php.ini, o open_basedir parece assim:

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/usr/local/bin/

Eu também tentei Sudo composer self-update mas não funcionou tão bem e possivelmente não é o caminho certo. (?) O que mais eu poderia tentar fazer isso funcionar?

11
haheute

Agora, há um pacote para compositor no Arch Linux que funciona para mim:

Sudo pacman -S composer
1
haheute

este pode ser o caso se você tiver baixado composer.phar diretamente, 

mas não executando php composer-setup.php

faça composer.phar executável com o seguinte comando antes de movê-lo para /usr/local/bin/composer ou depois de mover 

Sudo chmod 755 composer.phar

composer-setup.php fará essa alteração para nós por padrão

14
Raaghu

Use o comando Sudo para qualquer comando que grave nos arquivos raiz da pasta. Isso funcionou para mim.

use Sudo "seu comando"

12
Mohammad Quadri

Você deve verificar as permissões do diretório/usr/local/bin /, não apenas o arquivo dentro. O processo tem que escrever ambos, o arquivo e o diretório, ambos devem ser concedidos. 

Além disso, uma dica geral: nem sempre definir tudo para 777. Não há razão para isso e torna o sistema vulnerável.

De acordo com a linha que você postou no último comentário, o diretório está atualmente gravável somente para o próprio usuário root. Isso explicaria o erro que você recebe. Você deve não tornar sua própria conta de usuário o proprietário, os sistemas Linux são ambientes multiusuário. Em vez disso, pense em uma dessas abordagens: 

  • adicione a conta que serve para executar a composer na raiz do grupo (uma conta de usuário pode pertencer a vários grupos) e torne o grupo de diretórios gravável
  • alterar a propriedade dos grupos do diretório para um grupo do qual a conta é membro e tornar o grupo de diretórios gravável
  • use o utilitário Sudo para instalar e atualizar o utilitário composer

A última opção é a normalmente escolhida e preferida. Ele deixa as permissões como elas são (conservadoras) e usa apenas privilégios elevados para trabalhos de manutenção do sistema, como instalação e atualização. 

10
arkascha

No Ubuntu SRV 16.04

PRIMEIRO

Sudo rm /usr/local/bin/composer

E

cd ~/.cache/composer
chmod 755 composer-temp.phar
Sudo mv composer-temp.phar /usr/local/bin/composer
4
Boss COTIGA

Mesmo depois de mover o arquivo via Sudo mv composer.phar /usr/local/bin/composer, eu estava recebendo um erro de permissão ao tentar executar o comando composer. Sudo chmod 755 /usr/local/bin/composer consertou as coisas para mim. 

3
Charlie Stanard

Isso fez o trabalho para mim no Centos 7

chown -R Apache:apache path/to/composer
chmod 755 path/to/composer
0
wkipo

Você pode adicionar temporariamente os direitos ao seu usuário em funcionamento e, em seguida, atualizar os erros do compositor s/ae, em seguida, recuperar os direitos. 

Sudo chmod 777 /usr/bin/
composer self-update
Sudo chmod 755 /usr/bin/
0
Sergey Radist