在 /usr/local/bin/ 中,Composer 被拒绝了权限。

42

我按照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.ini文件中,open_basedir的设置如下:

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

我也尝试了 sudo composer self-update,但它也没有起作用,可能不是正确的方法。还有什么别的方法可以尝试让它工作?


1
你应该检查目录/usr/local/bin/的权限,而不是其中的文件。该进程必须写入该目录,因此必须授予权限。另外,一个提示:不要总把所有东西都设置为777。这样没有理由,会使你的系统变得容易受到攻击。 - arkascha
好的,我应该为我的用户(我自己)“chown”目录“/usr/local/bin”吗?它看起来像这样:“drwxr-xr-x 2 root root 4096 30. Mai 18:08 bin”。看起来它应该只由root拥有,而不是用户.. (?) - haheute
1
我在这里不想开始评论流,而是在下面发布了一个答案。 - arkascha
14个回答

2

确保Composer已经安装在/usr/local/bin,然后按照以下步骤操作:

chmod 755 composer

如果权限被拒绝,添加sudo


0
  • 针对 Composer 2 版本

    sudo composer self-update --2
    
  • 针对 Composer 1 版本

    sudo composer self-update --1
    

1
你能解释一下这是如何解决问题的吗? - Eyad Mohammed Osama
我认为这解决了问题,因为在官方的Composer文档中使用sudo是一个建议: https://getcomposer.org/doc/03-cli.md#self-update-selfupdate如果您已经为整个系统安装了Composer,则可能需要以root权限运行命令。sudo -H composer self-update - floverdevel

0
chmod 755 /usr/local/bin/composer

-2
如果权限被拒绝,您应该使用带有sudo的命令,例如:
sudo composer self-update

2
永远不要在composer命令中使用sudo。 - Dinesh Suthar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接