web-dev-qa-db-fra.com

permission refusée au compositeur dans/usr/local/bin /

J'ai suivi la documentation sur https://getcomposer.org/doc/00-intro.md#globally pour installer composer globalement sur Arch Linux. Quand je fais composer self-update, je reçois ce message:

  [ErrorException]                                                                                    
  rename(/home/hannes/.composer/cache/composer-temp.phar,/usr/local/bin/composer): Permission denied 

Les autorisations dans /usr/local/bin/ (je les ai changées en 777, mais cela n’a pas aidé):

-rwxrwxrwx  1 hannes users 1104202 30. Mai 18:07 composer

Dans mon répertoire personnel, j'ai fait ceci:

Sudo chmod -R 777 .composer/

Dans /etc/php/php.ini, le open_basedir ressemble à ceci:

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/usr/local/bin/

J'ai aussi essayé Sudo composer self-update mais cela n'a pas fonctionné aussi bien et ce n'est peut-être pas la bonne façon. (?) Que pourrais-je essayer de faire pour que cela fonctionne?

11
haheute

Maintenant, il existe un paquet pour composer dans Arch Linux qui fonctionne pour moi:

Sudo pacman -S composer
1
haheute

cela pourrait être le cas si vous avez téléchargé composer.phar directement, 

mais pas en exécutant php composer-setup.php

rendre composer.phar exécutable avec la commande suivante avant de le déplacer vers /usr/local/bin/composer ou après le déplacement 

Sudo chmod 755 composer.phar

composer-setup.php fera ce changement pour nous par défaut

14
Raaghu

Utilisez la commande Sudo pour toute commande qui écrit dans les fichiers racine du dossier. Cela a fonctionné pour moi.

utilisez Sudo "votre commande"

12
Mohammad Quadri

Vous devriez vérifier les autorisations du répertoire/usr/local/bin /, pas seulement le fichier qu'il contient. Le processus doit écrire à la fois le fichier et le répertoire dans lequel les deux doivent être accordés. 

En dehors de cela, un conseil général: ne définissez pas toujours tout sur 777. Il n'y a aucune raison pour cela et cela rend votre système vulnérable.

Selon la ligne que vous avez postée dans le dernier commentaire, le répertoire est actuellement accessible en écriture seulement pour l'utilisateur root lui-même. Cela expliquerait l'erreur que vous obtenez. Vous devez non désigner votre propre compte utilisateur comme propriétaire, les systèmes Linux sont des environnements multi-utilisateurs. Pensez plutôt à l'une de ces approches: 

  • ajoutez le compte destiné à exécuter composer à la racine du groupe (un compte d'utilisateur peut appartenir à plusieurs groupes) et rendre le groupe de répertoires accessible en écriture
  • changer la propriété des groupes de l'annuaire en un groupe dont le compte est membre et rendre le groupe d'annuaires accessible en écriture
  • utilisez l'utilitaire Sudo pour installer et mettre à jour l'utilitaire composer

La dernière option est celle généralement choisie et préférée. Il laisse les autorisations telles quelles (conservatrices) et n'utilise que les privilèges élevés pour les travaux de maintenance du système, tels que l'installation et la mise à niveau. 

10
arkascha

Sur Ubuntu SRV 16.04

PREMIER

Sudo rm /usr/local/bin/composer

ET

cd ~/.cache/composer
chmod 755 composer-temp.phar
Sudo mv composer-temp.phar /usr/local/bin/composer
4
Boss COTIGA

Même après avoir déplacé le fichier via Sudo mv composer.phar /usr/local/bin/composer, une erreur d’autorisation s’est produite lors de l’exécution de la commande composer. Sudo chmod 755 /usr/local/bin/composer a corrigé les choses pour moi. 

3
Charlie Stanard

Cela a fait le travail pour moi sur Centos 7

chown -R Apache:apache path/to/composer
chmod 755 path/to/composer
0
wkipo

Vous pouvez ajouter temporairement les droits à votre utilisateur actif, puis mettre à jour le composeur sans erreurs et récupérer les droits. 

Sudo chmod 777 /usr/bin/
composer self-update
Sudo chmod 755 /usr/bin/
0
Sergey Radist