web-dev-qa-db-fra.com

Compositeur: contenu_entrée_fichier (./ composer.json): échec de l'ouverture du flux: autorisation refusée

J'essaie d'installer Prestissimo sur un serveur Ubuntu 16.04, mais cela entraîne une erreur:

$ 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>]...

Je suis connecté en tant qu'utilisateur kramer65, donc je ne sais pas pourquoi il ne peut pas écrire dans mon dossier personnel Ma réaction normale à un permission denied consiste à utiliser Sudo, mais composeur dit toujours:

Ne lancez pas Composer en tant qu'utilisateur root/super! Voir https://getcomposer.org/root pour plus de détails

Une idée de comment je peux résoudre ça?

40
kramer65

J'ai eu ce problème pour installer laravel/Lumen.

Je peux résoudre avec la commande suivante:

$ Sudo chown -R $USER ~/.composer/
119
Samuel Martins

Pour résoudre ce problème, ouvrez une fenêtre de terminal et tapez cette commande:

Sudo chown -R user ~/.composer (avec user étant votre utilisateur actuel, dans votre cas, kramer65)

Après avoir exécuté cette commande, vous devez avoir l'autorisation d'exécuter la commande de votre composeur global require. 

Vous devrez peut-être également supprimer le fichier .composer du répertoire en cours. Pour ce faire, ouvrez une fenêtre de terminal et tapez cette commande:

Sudo rm -rf .composer

9
Ken

Dans mon cas, .composer était la propriété de root. J'ai donc utilisé Sudo rm -fr .composer puis mon besoin global a fonctionné.

Être averti! Vous ne voulez pas utiliser cette commande si vous n'êtes pas sûr de ce que vous faites.

1
Nabil Kadimi

J'ai fait face à ce problème aussi mais dans mon cas, j'étais dans le mauvais répertoire. Vérifiez le répertoire dans lequel vous travaillez

1
Yasin Okumuş

dans votre ordinateur, tapez simplement la commande suivante dans votre répertoire où docker est:

chown -R 1000: 1000/var/www

le/var/www peut changer si vous stockez vos projets dans un autre dossier.

par exemple:

chown -R 1000: 1000/home/myuser/my_projects

0
Albert Abdonor

Dans mon cas, je n'ai pas de problèmes avec ~/.composer.
Donc, étant dans le dossier racine de l’application Laravel, j’ai fait Sudo chown -R $USER composer.lock et c’était utile.

0
Tarasovych

Cela pourrait être un cas super Edge, mais si vous utilisez Travis CI et tirez parti de la mise en cache, vous pouvez effacer tout le cache et réessayer. 

Correction du problème lorsque je passais de Sudo à des versions non Sudo.

0
Moak