composer(たとえば、Sudo composer install, Sudo composer self-update
など)を実行するたびに、ファイルの所有者がrootであるため、これをSudoで実行する必要があります。
ただし、composerをSudoルートで使用するたびにベンダーフォルダーを所有し、そのフォルダー/特権の所有者をルートからwww-dataに変更する必要があります。
毎回Sudoを実行する必要がないように、これを修正する最良の方法は何ですか?
/usr/local/bin/composer
の所有者をルートからwww-dataに変更しますか?
これは、Sudo composer install
を使用するたびに所有権を変更し、許可を割り当てる必要を回避するためにこれを処理する理想的な方法ですか?
編集: composerのパーミッションは現在-rwxr-xr-x
です。そして、/usr/local/bin/composer
の所有者を775に設定された権限でwww-data:www-data
に切り替えようとしましたが、Sudo
を実行しないとcomposerを実行できません。
「全員」が作曲家の読み取りと実行を許可されている場合、Sudoを使用する必要はありません。
Sudo chmod 755 /var/local/bin/composer
composerをroot
として少なくとも1回はすでに実行しているため、composers(per-user-)cacheディレクトリはrootが所有するため、通常のユーザーは書き込みできません。
Sudo chown -R lamp:lamp /home/lamp/.composer
ファイル所有者を修正します。
私は何週間もこの問題に取り組んできました。
解決策は、composer自己更新を-Hで実行することだと思います
Sudo -H composer self-update
これを行う前に、ルートの.composerディレクトリと、composerを実行するユーザーのホームディレクトリを削除してください。
Sudo rm -rf /root/.composer
Sudo rm -rf /home/ubuntu/.composer
-HフラグなしでSudo composer self-updateを実行すると、rootが所有する〜/ .composerが作成され、他のcomposerコマンドが許可エラーを持つのを防ぎます。
composer config
composer install
私の意見では、Sudo composer self-updateを呼び出すと、現在のユーザーのホームディレクトリにrootが所有するファイルを作成すべきではありません。
Ubuntu 14.04でこれらの指示に従う場合、composerはキャッシュを次の場所に配置することに注意してください。
~/.cache/composer
のではなく:
~/.composer/cache
これは、Ubuntu 14.04で定義されているXDG_RUNTIME_DIR環境変数のためですが、Ubuntu 12.04では定義されていないようです。