Chaque fois que je lance Composer (par exemple, sudo composer install, sudo composer self-update
etc.), je dois l'exécuter avec sudo car le propriétaire du fichier est root.
Cependant, chaque fois que j'utilise le composeur avec sudo root possède le dossier du fournisseur, puis je dois changer le propriétaire de ce dossier / privilèges de root en www-data.
Quelle est la meilleure façon de résoudre ce problème afin que je n'aie pas à exécuter sudo à chaque fois?
Changer le propriétaire de /usr/local/bin/composer
root en www-data?
Est-ce le moyen idéal de gérer cela pour éviter d'avoir à changer de propriétaire et à attribuer une autorisation chaque fois que j'utilise sudo composer install
?
Modifier:
les autorisations pour le compositeur sont actuellement -rwxr-xr-x
. Et j'ai essayé de changer le propriétaire de /usr/local/bin/composer
over www-data:www-data
avec des autorisations définies sur 775, et je ne peux toujours pas exécuter composer sans l'exécuter sudo
.
composer self-update
sans utiliser sudo. Dois-je utiliser 775?composer update
et cela ne fonctionne pas non plus avec ces autorisations. Je dois toujours utiliser sudo en premier. C'est l'erreur que je reçoisfile_put_contents(/home/lamp/.composer/cache/repo/https---packagist.org/packages.json): failed to open stream: Permission denied
chown -R lamp:lamp /home/lamp/.composer
)Je traite ce problème depuis des semaines.
Je pense que la solution consiste à exécuter la mise à jour automatique du compositeur avec le -H
Avant de faire cela, assurez-vous de supprimer les répertoires .composer à la racine et le répertoire personnel de l'utilisateur que vous souhaitez exécuter composer.
L'exécution de la mise à jour automatique de sudo composer sans l'indicateur -H créera ~ / .composer qui appartient à root et empêchera les autres commandes de composer d'avoir des erreurs d'autorisation.
À mon avis, appeler l'auto-mise à jour de sudo composer ne devrait pas créer de fichiers appartenant à root dans le répertoire personnel des utilisateurs actuels.
Notez que si vous suivez ces instructions sur Ubuntu 14.04, le composeur placera le cache dans:
Plutôt que:
Cela est dû à la variable d'environnement XDG_RUNTIME_DIR définie dans Ubuntu 14.04 mais ne semble pas être définie dans Ubuntu 12.04
Une discussion connexe ici
la source
$ sudo -H composer self-update $ You are already using composer version 1.3.0 (stable channel).
~/.composer
dossier semble résoudre le problème.