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 を参照してください
これをどのように解決できるか考えていますか?
Laravel/Lumenをインストールするときにこの問題が発生しました。
次のコマンドで解決できます。
$ Sudo chown -R $USER ~/.composer/
これを解決するには、ターミナルウィンドウを開き、次のコマンドを入力する必要があります。
Sudo chown -R user ~/.composer
(現在のユーザーであるuser
を使用している場合、kramer65
)
このコマンドを実行した後、composer global requireコマンドを実行する権限が必要です。
また、現在のディレクトリから.composerファイルを削除する必要があります。これを行うには、ターミナルウィンドウを開き、次のコマンドを入力します。
Sudo rm -rf .composer
私もこの問題に直面しましたが、私の場合、間違ったディレクトリにいました。作業中のディレクトリを確認してください
私の場合、.composer
はrootによって所有されていたので、Sudo rm -fr .composer
を実行してから、グローバル要求が機能しました。
警告してください!何をしているのかわからない場合は、そのコマンドを使いたくないでしょう。
pCで、次のコマンドをdockerがあるディレクトリに入力します。
chown -R 1000:1000/var/www
/ var/wwwは、プロジェクトを他のフォルダーに保存する場合に変更できます。
例えば:
chown -R 1000:1000/home/myuser/my_projects
私の場合、~/.composer
に問題はありません。
だからLaravelアプリのルートフォルダーの中にいるので、私はSudo chown -R $USER composer.lock
を実行しました。
これはスーパーエッジのケースかもしれませんが、Travis CIを使用してキャッシュを利用している場合は、すべてのキャッシュをクリアして再試行することをお勧めします。
Sudoから非Sudoビルドに移行するときの問題を修正しました。