sudoを使用せずにComposerを実行します(変更された所有者と権限を試しました)


12

コンポーザ(たとえば、sudo composer install, sudo composer self-updateなど)を実行するたびに、ファイルの所有者がrootであるため、sudoでこれを実行する必要があります。

ただし、sudoルートで作曲家を使用するたびにベンダーフォルダーを所有し、そのフォルダー/特権の所有者をルートからwww-dataに変更する必要があります。

毎回sudoを実行する必要がないように、これを修正する最良の方法は何ですか?

の所有者を/usr/local/bin/composerルートからwww-dataに変更しますか?

これは、sudoを使用するたびに所有権を変更したり、アクセス許可を割り当てたりする必要がないように、これを処理する理想的な方法composer installですか?

編集: 現在、作曲家の権限はです-rwxr-xr-x。そして、パーミッションを775に設定して/usr/local/bin/composerover の所有者を切り替えようとしましたがwww-data:www-data、まだ実行しないとcomposerを実行できませんsudo

回答:


8

「全員」が作曲家の読み取りと実行を許可されている場合、sudoを使用する必要はありません。

sudo chmod 755 /var/local/bin/composer

composerをとして少なくとも1回は既に実行しているためroot、composers(per-user-)cacheディレクトリは現在rootによって所有されているため、通常のユーザーは書き込みできません。

sudo chown -R lamp:lamp /home/lamp/.composer

ファイル所有者を修正します。


私はこれを試しましたが、composer self-updatesudoを使用せずに実行することはできません。775を使用する必要がありますか?
旋風に乗る

自己更新は755では機能しませんが、これは重要ですか?自己更新は毎日実行する必要はありません。2週間に1回程度更新するだけです(もちろんsudoを使用)。
tkausl

試してみましたがcomposer update、これらの権限でもこれは機能しません。まだ最初にsudoを使用する必要があります。これは私が得るエラーですfile_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
旋風に乗って

ああ、はい、あなたはすでに「sudo」を使用していくつかの依存関係を更新しました、「/ home / lamp / .composer /」はルートが所有していると思います。 sudo。(または所有権の変更:chown -R lamp:lamp /home/lamp/.composer
tkausl

それはトリックをしました、所有者をランプに変えて行きました。回答を更新してもらえますか。受け入れますか?ありがとうtakusl
旋風に乗って

5

私は何週間もこの問題に取り組んできました。

解決策は-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では定義されていないようです。

関連する議論はこちら


すでに最新バージョンの作曲家を実行している場合、これは役に立ちません。 $ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
Cragmonkey

@Cragmonkey-最新バージョンの作曲家を実行していましたが、~/.composerフォルダーを削除するだけで問題が解決したようです。
Cyclonecode
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.