web-dev-qa-db-ja.com

作曲者:file_put_contents(./ composer.json):ストリームを開けませんでした:許可が拒否されました

Ubuntu 16.04サーバーに Prestissimo をインストールしようとしていますが、エラーが発生します。

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

ユーザーkramer65としてログインしているので、ホームフォルダーに書き込めない理由がわかりません。 permission deniedに対する私の通常の反応はSudoを使用することですが、composerは常にこう言います:

Composerをroot /スーパーユーザーとして実行しないでください!詳細については、 https://getcomposer.org/root を参照してください

これをどのように解決できるか考えていますか?

54
kramer65

Laravel/Lumenをインストールするときにこの問題が発生しました。

次のコマンドで解決できます。

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

これを解決するには、ターミナルウィンドウを開き、次のコマンドを入力する必要があります。

Sudo chown -R user ~/.composer(現在のユーザーであるuserを使用している場合、kramer65

このコマンドを実行した後、composer global requireコマンドを実行する権限が必要です。

また、現在のディレクトリから.composerファイルを削除する必要があります。これを行うには、ターミナルウィンドウを開き、次のコマンドを入力します。

Sudo rm -rf .composer

11
Ken

私もこの問題に直面しましたが、私の場合、間違ったディレクトリにいました。作業中のディレクトリを確認してください

1
Yasin Okumuş

私の場合、.composerはrootによって所有されていたので、Sudo rm -fr .composerを実行してから、グローバル要求が機能しました。

警告してください!何をしているのかわからない場合は、そのコマンドを使いたくないでしょう。

0
Nabil Kadimi

pCで、次のコマンドをdockerがあるディレクトリに入力します。

chown -R 1000:1000/var/www

/ var/wwwは、プロジェクトを他のフォルダーに保存する場合に変更できます。

例えば:

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

0
Albert Abdonor

私の場合、~/.composerに問題はありません。
だからLaravelアプリのルートフォルダーの中にいるので、私はSudo chown -R $USER composer.lockを実行しました。

0
Tarasovych

これはスーパーエッジのケースかもしれませんが、Travis CIを使用してキャッシュを利用している場合は、すべてのキャッシュをクリアして再試行することをお勧めします。

Sudoから非Sudoビルドに移行するときの問題を修正しました。

0
Moak