Executando o Composer sem usar o sudo (tentei alterar o proprietário e as permissões)

7

Sempre que executo o compositor (por exemplo, sudo composer install, sudo composer self-update etc.), preciso executá-lo com o sudo, pois o proprietário do arquivo é root.

No entanto, toda vez que eu uso o compositor com sudo root possui a pasta vendor e então eu tenho que mudar o dono dessa pasta / privilégios da raiz para www-data.

Qual é a melhor maneira de corrigir isso, portanto, não preciso executar o sudo todas as vezes?

Alterar o proprietário de /usr/local/bin/composer da raiz para www-data?

Esta é a maneira ideal de lidar com isso para evitar a necessidade de alterar a propriedade e atribuir permissão toda vez que eu usar o sudo composer install ?

Editar: As permissões para o compositor estão atualmente em -rwxr-xr-x . E eu tentei mudar o proprietário de /usr/local/bin/composer para www-data:www-data com permissões definidas para 775, e ainda não consigo executar o compositor sem executar sudo .

    
por purple dot 17.03.2015 / 05:02

2 respostas

3

Se "todos" tiverem permissão para ler e executar o compositor, você não precisa usar o sudo:

sudo chmod 755 /var/local/bin/composer

Como você já executou o compositor pelo menos uma vez como root , o diretório de cache dos compositores (por usuário) agora pertence ao root e, portanto, não pode ser gravado pelo usuário normal.

sudo chown -R lamp:lamp /home/lamp/.composer

consertará o proprietário do arquivo.

    
por tkausl 17.03.2015 / 05:12
3

Eu tenho lidado com essa questão por semanas.

Acho que a solução é executar a auto-atualização do compositor com o -H

sudo -H composer self-update

Antes de fazer isso, certifique-se de remover os diretórios .composer em root e o diretório inicial do usuário que você deseja executar o compositor.

sudo rm -rf /root/.composer
sudo rm -rf /home/ubuntu/.composer

A execução da autoatualização do sudo composer sem o sinalizador -H criará ~ / .composer de propriedade do root e impedirá que outros comandos do compositor tenham erros de permissão.

composer config
composer install 

Na minha opinião, a chamada autoatualização do sudo composer não deve criar arquivos de propriedade do root no diretório inicial dos usuários atuais.

Note que se você seguir estas instruções no Ubuntu 14.04 o compositor colocará o cache em:

 ~/.cache/composer

Em vez de:

~/.composer/cache

Isso se deve à variável de ambiente XDG_RUNTIME_DIR definida no Ubuntu 14.04, mas não parece estar definida no Ubuntu 12.04

Uma discussão relacionada aqui

    
por Lance 13.03.2016 / 06:59

Tags