it-swarm.com.de

Komponist: file_put_contents (./composer.json): Stream konnte nicht geöffnet werden: Berechtigung verweigert

Ich versuche, Prestissimo auf einem Ubuntu 16.04-Server zu installieren, aber das führt zu einem Fehler:

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

Ich bin als Benutzer kramer65 angemeldet, daher würde ich nicht wissen, warum er nicht in meinen Heimatordner schreiben kann. Normalerweise reagiere ich auf einen permission denied mit Sudo, aber der Komponist sagt dann immer:

Führen Sie Composer nicht als root/super-Benutzer aus! Weitere Informationen finden Sie unter https://getcomposer.org/root

Irgendeine Idee, wie ich das lösen kann?

40
kramer65

Ich hatte dieses Problem, um Laravel/Lumen zu installieren.

Ich kann mit dem folgenden Befehl auflösen:

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

Um dies zu beheben, sollten Sie ein Terminalfenster öffnen und den folgenden Befehl eingeben:

Sudo chown -R user ~/.composer (wobei user Ihr aktueller Benutzer ist, in Ihrem Fall kramer65)

Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie über die Berechtigung zum Ausführen des globalen Requirement-Befehls verfügen. 

Möglicherweise müssen Sie auch die .composer-Datei aus dem aktuellen Verzeichnis entfernen. Öffnen Sie dazu ein Terminalfenster und geben Sie den folgenden Befehl ein:

Sudo rm -rf .composer

9
Ken

In meinem Fall war .composer im Besitz von root, also habe ich Sudo rm -fr .composer und dann habe meine globale Anforderung funktioniert.

Sei gewarnt! Sie möchten diesen Befehl nicht verwenden, wenn Sie nicht sicher sind, was Sie tun.

1
Nabil Kadimi

Ich war auch mit diesem Problem konfrontiert, aber in meinem Fall befand ich mich in einem falschen Verzeichnis. Überprüfen Sie das Verzeichnis, in dem Sie arbeiten

1
Yasin Okumuş

geben Sie in Ihrem PC einfach den folgenden Befehl in das Verzeichnis ein, in dem sich docker befindet:

chown -R 1000: 1000/var/www

das/var/www kann sich ändern, wenn Sie Ihre Projekte in einem anderen Ordner speichern.

zum Beispiel:

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

0
Albert Abdonor

In meinem Fall habe ich keine Probleme mit ~/.composer.
Ich befand mich also im Laravel-App-Stammverzeichnis und Sudo chown -R $USER composer.lock.

0
Tarasovych

Dies kann ein Fall von Super Edge sein, aber wenn Sie Travis CI verwenden und die Zwischenspeicherung nutzen, möchten Sie möglicherweise den gesamten Cache leeren und den Vorgang wiederholen. 

Mein Problem wurde behoben, als ich von Sudo zu Builds außerhalb von Sudo wechselte.

0
Moak