Estou tentando instalar o Prestissimo em um servidor Ubuntu 16.04, mas ocorre um erro:
$ composer global require "hirak/prestissimo:^0.3"
Changed current directory to /home/kramer65/.composer
[ErrorException]
file_put_contents(./composer.json): failed to open stream: Permission denied
require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--] [<packages>]...
Estou conectado como usuário kramer65
, então não sei por que não consigo gravar na minha pasta de início. Minha reação normal a um permission denied
é usar sudo
, mas o compositor sempre diz:
Não execute o Composer como root / superusuário! Consulte https://getcomposer.org/root para obter detalhes
Alguma ideia de como posso resolver isso?
composer.json
?~/.composer/composer.json
arquivo ainda.~/.composer/
pasta?kramer65
não tem o direito de escrever, parece, umchmod
poderia ser útil.~/.composer/
é propriedade deroot
. Mas acabei de verificar alguns outros sistemas e instalei o composer em uma nova VM do Ubuntu 16.04, e ela sempre pertence aroot
. Eu não posso de cursochmod
ouchown
isso, mas é uma boa idéia para mudar esse comportamento padrão?755
modo. Portanto, mudar de proprietário provavelmente não é a solução.Respostas:
Tive esse problema para instalar o laravel / lumen.
Isso pode ser resolvido com o seguinte comando:
$ sudo chown -R $USER ~/.composer/
fonte
~/.composer
Para resolver isso, você deve abrir uma janela de terminal e digitar este comando:
sudo chown -R user ~/.composer
(user
sendo seu usuário atual, no seu casokramer65
)Depois de executar este comando, você deve ter permissão para executar o comando requerer global do composer.
Você também pode precisar remover o arquivo .composer do diretório atual, para fazer isso, abra uma janela de terminal e digite este comando:
sudo rm -rf .composer
fonte
No meu caso,
.composer
era propriedade do root, então eu fizsudo rm -fr .composer
e meu requerimento global funcionou.Esteja avisado! Você não quer usar esse comando se não tiver certeza do que está fazendo.
fonte
Eu também enfrentei esse problema, mas, no meu caso, estava no diretório errado. Verifique o diretório em que está trabalhando
fonte
No meu caso, não tenho problemas com
~/.composer
.Então, estando dentro da pasta raiz do aplicativo Laravel, eu fiz
sudo chown -R $USER composer.lock
e foi útil.fonte
Este pode ser um caso extremamente extremo, mas se você estiver usando o Travis CI e aproveitando o armazenamento em cache, convém limpar todo o cache e tentar novamente.
Corrigido meu problema quando eu estava indo de compilações sudo para não sudo.
fonte
Eu estava recebendo a mesma exceção, mas no meu caso estou usando o PowerShell para executar comandos. Portanto, corrigi isso com uma instrução para desbloquear vários arquivos primeiro.
PS C:\> dir C:\executable_file_Path\*PowerShell* | Unblock-File
e use o seguinte para carregar o pacote& 'C:\path_to_executable\php.exe' "c:\path_to_composer_.phar_file\composer.phar "require desired/package
fonte
No meu caso costumava
sudo mkdir projectFolder
criar pasta. Era propriedade do usuário root e eu estava logado usando um usuário não root.Então, mudei a permissão da pasta usando o comando
sudo chown mynonrootuser:mynonrootuser projectFolder
e funcionou bem.fonte
Para mim, no Ubuntu 18.04. Eu precisava comer por dentro
~/.config/composer/
Por exemplo
sudo chown -R $USER ~/.config/composer
Então os comandos globais funcionam.
fonte