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 angemeldet kramer65
, daher würde ich nicht wissen, warum es nicht in meinen Home-Ordner schreiben kann. Meine normale Reaktion auf a permission denied
ist zu verwenden sudo
, aber der Komponist sagt dann immer:
Führen Sie Composer nicht als Root / Superuser aus! Weitere Informationen finden Sie unter https://getcomposer.org/root
Irgendeine Idee, wie ich das lösen kann?
composer.json
?~/.composer/composer.json
Datei vorhanden.~/.composer/
Ordner?kramer65
hat anscheinend kein schreibrecht, einchmod
könnte nützlich sein.~/.composer/
gehörtroot
. Aber ich habe gerade einige andere Systeme überprüft und Composer auf einer neuen Ubuntu 16.04-VM installiert, die immer im Besitz von istroot
. Ich kann natürlichchmod
oderchown
so, aber ist es eine gute Idee, dieses Standardverhalten zu ändern?755
Modus. Ein Eigentümerwechsel ist also wahrscheinlich nicht die Lösung.Antworten:
Ich hatte dieses Problem, Laravel / Lumen zu installieren.
Es kann mit dem folgenden Befehl gelöst werden:
quelle
~/.composer
Um dies zu beheben, sollten Sie ein Terminalfenster öffnen und den folgenden Befehl eingeben:
sudo chown -R user ~/.composer
(user
in Ihrem Fall als aktueller Benutzerkramer65
)Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie über die Berechtigung verfügen, Ihren globalen Composer-Befehl require auszuführen.
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
quelle
Ich war auch mit diesem Problem konfrontiert, aber in meinem Fall befand ich mich im falschen Verzeichnis. Überprüfen Sie das Verzeichnis, in dem Sie arbeiten
quelle
In meinem Fall
.composer
gehörte root, also habe ich es getansudo rm -fr .composer
und dann hat mein globaler Bedarf funktioniert.Sei gewarnt! Sie möchten diesen Befehl nicht verwenden, wenn Sie nicht sicher sind, was Sie tun.
quelle
In meinem Fall habe ich keine Probleme mit
~/.composer
.Als ich mich im Stammordner der Laravel-App befand, tat ich das
sudo chown -R $USER composer.lock
und es war hilfreich.quelle
Dies ist möglicherweise ein Super-Edge-Fall. Wenn Sie jedoch Travis CI verwenden und das Caching nutzen, möchten Sie möglicherweise den gesamten Cache löschen und erneut versuchen.
Ich habe mein Problem behoben, als ich von Sudo zu Nicht-Sudo-Builds gewechselt bin.
quelle
Ich habe die gleiche Ausnahme erhalten, aber in meinem Fall verwende ich PowerShell zum Ausführen von Befehlen. Daher habe ich dies mit der Anweisung behoben, zuerst mehrere Dateien zu entsperren.
PS C:\> dir C:\executable_file_Path\*PowerShell* | Unblock-File
und verwenden Sie dann Folgendes, um das Paket zu laden& 'C:\path_to_executable\php.exe' "c:\path_to_composer_.phar_file\composer.phar "require desired/package
quelle
In meinem Fall habe ich
sudo mkdir projectFolder
einen Ordner erstellt. Es gehörte dem Root-Benutzer und ich war mit einem Nicht-Root-Benutzer angemeldet.Also habe ich die Ordnerberechtigung mit dem Befehl geändert
sudo chown mynonrootuser:mynonrootuser projectFolder
und dann hat es gut funktioniert.quelle