Разрешение отклонено для композитора в/usr/local/bin/

Я выполнил документацию по https://getcomposer.org/doc/00-intro.md#globally, чтобы установить композитор по всему миру в arch linux. Когда я делаю composer self-update, я получаю это сообщение:

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

Разрешения в /usr/local/bin/ (я изменил их на 777, но это не помогло):

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

В моем домашнем каталоге я сделал это:

sudo chmod -R 777 .composer/

В /etc/php/php.ini, open_basedir выглядит так:

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

Я также пробовал sudo composer self-update, но это не сработало, и возможно, это не так. (?). Что еще я мог бы попытаться сделать эту работу?

Ответ 1

Теперь у меня есть пакет для композитора в arch linux, который работает для меня:

sudo pacman -S composer

Ответ 2

это может быть так, если вы скачали composer.phar напрямую,

но не запуском php composer-setup.php

сделать composer.phar исполняемый файл со следующей командой перед перемещением на /usr/local/bin/composer или после перемещения

sudo chmod 755 composer.phar

composer-setup.php сделает это изменение для нас по умолчанию

Ответ 3

Используйте команду sudo для любой команды, которая записывает в корневые файлы папки. Это сработало для меня.

используйте sudo "ваша команда"

Ответ 4

Вы должны проверить разрешения каталога /usr/local/bin/, а не только файла внутри. Процесс должен записывать как файл, так и в каталог, который должен быть предоставлен.

Кроме того, общий намек: не всегда устанавливайте все на 777. Для этого нет причин, и это делает вашу систему уязвимой.

В соответствии с линией, опубликованной в последнем комментарии, каталог в настоящее время можно записать только для самого пользователя root. Это объясняет полученную вами ошибку. Вы не должны создавать собственную учетную запись владельца, системы Linux - это многопользовательские среды. Вместо этого подумайте об одном из этих подходов:

  • добавить учетную запись, предназначенную для выполнения composer для корня группы (учетная запись пользователя может принадлежать нескольким группам) и сделать группу каталогов доступной для записи
  • изменить принадлежность групп к каталогу группе, членом которой является учетная запись, и сделать группу каталогов доступной для записи
  • используйте утилиту sudo для установки и обновления утилиты composer

Последний вариант - типично выбранный и предпочтительный. Он оставляет разрешения такими, какие они есть (консервативны), и использует только повышенные привилегии для заданий на обслуживание системы, таких как установка и обновление.

Ответ 5

Даже после перемещения файла через sudo mv composer.phar /usr/local/bin/composer я получал ошибку разрешения при попытке запустить команду composer. sudo chmod 755 /usr/local/bin/composer фиксированные вещи для меня.

Ответ 6

В Ubuntu SRV 16.04

ПЕРВЫЙ

sudo rm /usr/local/bin/composer

и

cd ~/.cache/composer
chmod 755 composer-temp.phar
sudo mv composer-temp.phar /usr/local/bin/composer

Ответ 7

Это работало для меня на Centos 7

chown -R apache:apache path/to/composer
chmod 755 path/to/composer

Ответ 8

Вы можете временно добавить права своему рабочему пользователю, затем обновить композитор без ошибок и затем вернуть права.

sudo chmod 777 /usr/bin/
composer self-update
sudo chmod 755 /usr/bin/