/ usr / local / bin /

我遵循https://getcomposer.org/doc/00-intro.md#globally上的文档来在arch linux上全局安装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.iniopen_basedir看起来如此:

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

我也尝试sudo composer self-update但它不工作,可能不是正确的方式。 (?)。 我还有什么可以尝试做这个工作?

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

除此之外,一个普遍的提示:并不总是把所有东西都设置为777.没有理由,这会使你的系统变得脆弱。

根据您在上次评论中发布的行,目录目前只能由root用户自己写入。 这将解释你得到的错误。 你不应该让你自己的用户帐户的所有者,Linux系统是多用户环境。 而是想想其中的一种方法:

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

最后一个选项是通常选择的和首选的选项。 它保留了原有的权限(保守),只对安装和升级等系统维护作业使用提升权限。

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

使用sudo“你的命令”

这可能是如果你已经直接下载了composer.phar

但不能运行php composer-setup.php

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

sudo chmod 755 composer.phar

composer-setup.php会默认为我们做这个改变

现在,在arch linux中有一个作曲家软件包,它适用于我:

 sudo pacman -S composer 

即使在通过sudo mv composer.phar /usr/local/bin/composer移动文件之后,在尝试运行composer命令时出现许可错误。 sudo chmod 755 /usr/local/bin/composer修复了我的东西。

这在Centos 7上完成了我的工作

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