在/usr/local/bin/中拒绝了composer的权限


permission denied for composer in /usr/local/bin/

我遵循了https://getcomposer.org/doc/00-intro.md#globally在archlinux上全局安装composer。当我执行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,但效果不太好,可能不是正确的方法。(?)。我还能试着做些什么呢?

在Ubuntu服务器上>=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

如果您直接下载了composer.phar

但不能通过运行php composer-setup.php

在将composer.phar移动到/usr/local/bin/composer之前或移动之后,使用以下命令使其可执行

sudo chmod 755 composer.phar

composer-setup.php将在默认情况下为我们进行此更改

您应该检查目录/usr/local/bin/的权限,而不仅仅是其中的文件。进程必须同时将文件和写入目录,这两者都必须被授予权限。

除此之外,还有一个一般提示:不要总是将所有内容都设置为777。这是没有原因的,它会使您的系统变得脆弱。

根据您在上一条评论中发布的行,该目录当前仅可写入根用户自己的。这可以解释你所犯的错误。您应该而不是让您自己的用户帐户成为所有者,Linux系统是多用户环境。相反,考虑一下其中一种方法:

  • 将要执行composer的帐户添加到组根(一个用户帐户可以属于多个组),并使目录组可写
  • 将目录的组所有权更改为帐户所属的组,并使目录组可写
  • 使用sudo实用程序安装和更新composer实用程序

最后一个选项是通常选择的首选选项。它保持权限不变(保守),并且只将提升的权限用于系统维护作业(如安装和升级)。

对任何写入文件夹根文件的命令使用sudo命令。它对我有效。

使用sudo"您的命令"

即使在通过sudo mv composer.phar /usr/local/bin/composer移动文件后,我在尝试运行composer命令时也遇到了权限错误。sudo chmod 755 /usr/local/bin/composer为我修复了一些东西。

您可以临时将权限添加到工作用户,然后更新composer(无错误),然后取回权限。

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

现在,在arch-linux中有一个适用于composer的包:

sudo pacman -S composer

这为我在Centos 7 上完成了任务

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

确保composer已经在/usr/local/bin,然后执行以下操作

chmod 755 composer

如果权限被拒绝,则添加sudo

对于那些使用共享服务器的人,以下是步骤。

让我们先下载composer文件。

  • cd ~
  • curl -sS https://getcomposer.org/installer | php

现在我们可以通过以下方式访问composer:

  • ~/composer.phar

假设根目录中有/public_html,下面是使用最新composer的步骤。

  • cd public_html
  • ~/composer.phar update

将来,如果您想更新composer:

  • ~/composer.phar self-update

希望这会有所帮助。

我的macO解决方案如下:

首先删除您创建的目录。使用以下命令有点像"/usr/local/bin/composer":rmdir/usr/local/bin/composer。

现在尝试使用Homebrew:再次安装composer

步骤1:brew安装composer。步骤2:酿造链接作曲家。

现在您可以在终端中运行composer。

  • 对于作曲家2

    sudo composer self-update --2
    
  • 对于作曲家1

    sudo composer self-update --1
    
chmod 755 /usr/local/bin/composer

如果权限被拒绝,您应该使用类似于sudo的命令:

sudo composer self-update