2015-06-20 65 views
9

中被作者拒绝接受我遵循https://getcomposer.org/doc/00-intro.md#globally的文档在arch linux上全局安装composer。当我做composer self-update,我得到这个消息:权限在/ usr/local/bin/

[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

您应该检查_directory_'/ usr/local/bin /'的权限,而不是其中的文件。该过程必须写入必须授予的目录中。除此之外,还有一个提示:_do并不总是将所有内容都设置为777_。没有理由,这会让你的系统变得脆弱。 – arkascha

+0

好吧,我应该为我的用户(我)“chown”目录'/ usr/local/bin'吗?它看起来像这样:'drwxr-xr-x 2 root root 4096 30. Mai 18:08 bin'它看起来应该只由root用户拥有,而不是用户。(?) – haheute

+0

而不是开始注释流程这里我在下面发布了一个答案。 – arkascha

回答

1

现在,有一个包在Arch Linux的作曲家,其作品对我来说:

sudo pacman -S composer 
9

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

除此之外,一般提示:并不总是将所有内容都设置为777.没有理由这样做,这会使系统变得脆弱。

根据您在最后一条评论中发布的行,该目录目前仅为,对于root用户本人而言只有。这将解释你得到的错误。你应该不是让你自己的用户帐户成为拥有者,Linux系统是多用户环境。相反,想想这些方法之一:

  • 添加,是为了执行composer到组root(用户帐户可以属于多个组),使目录组可写
  • 变化组帐户将目录帐户的组的所有权的成员,使目录组可写
  • 使用sudo实用程序安装和更新composer实用

最后Ø ption是典型的选择和首选。它保留了权限(保守),并且只对安装和升级等系统维护作业使用提升权限。

+1

我怎样才能做你在子弹中描述的步骤? Linux命令不是我的专长 – Lykos

8

将sudo命令用于写入文件夹根文件的任何命令。它为我工作。

使用sudo的“你的命令”

+0

这可能是大锤的做法。 – dakab

1

我得到一个权限错误甚至通过sudo mv composer.phar /usr/local/bin/composer文件移动后试图运行composer命令时。 sudo chmod 755 /usr/local/bin/composer为我修好了东西。

0

该做的工作,我在CentOS 7

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

你能解释一下它是如何澄清你的答案吗?提前致谢! –

+0

第一个命令将apache指定为文件夹的所有者。第二个命令使文件夹对于用户和组“可读,可写,可执行”,对于其他可读“可执行”。 – wkipo

8

这可能是这种情况,如果你已经直接下载composer.phar

而不是通过运行php composer-setup.php

使composer.phar可执行文件与以下命令,然后将其移至/usr/local/bin/composer或移动后

sudo chmod 755 composer.phar

作曲家setup.php将使这种变化对我们默认

+0

我做到了这一点,它为我工作。在进入/ usr/local/bin或重新安装作曲程序之前,不确定它是否在执行chmod。没有意义,因为它已经具有正确的权限,但它现在没有错误。 – systematical

1

在Ubuntu 16.04 SRV

FIRST

sudo rm /usr/local/bin/composer 

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

这对我有用。谢谢 –